home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / gnu / emacs_src_18_58.lha / emacs-18.58 / lisp / mh-e.elc < prev    next >
Text File  |  1992-02-21  |  72KB  |  1,129 lines

  1.  
  2. (defvar mh-e-RCS-id)
  3.  
  4. (setq mh-e-RCS-id "$Header: mh-e.el,v 3.5 92/01/21 11:21:59 gildea Exp $")
  5.  
  6. (setq mh-e-time-stamp "92/01/21 10:59:18 gildea")
  7.  
  8. (provide (quote mh-e))
  9.  
  10. (defvar mh-redist-full-contents nil "\
  11. Non-nil if the `dist' command needs whole letter for redistribution.
  12. This is the case when `send' is compiled with the BERK option.")
  13.  
  14. (defvar mh-folder-mode-hook nil "\
  15. Invoked in `mh-folder mode' on a new folder.")
  16.  
  17. (defvar mh-letter-mode-hook nil "\
  18. Invoked in `mh-letter-mode' on a new letter.")
  19.  
  20. (defvar mh-compose-letter-function nil "\
  21. Invoked in `mh-compose-and-send-mail' on a draft letter.
  22. It is passed three arguments: TO recipients, SUBJECT, and CC recipients.")
  23.  
  24. (defvar mh-before-send-letter-hook nil "\
  25. Invoked at the beginning of the \\[mh-send-letter] command.")
  26.  
  27. (defvar mh-inc-folder-hook nil "\
  28. Invoked after incorporating mail into a folder with \\[mh-inc-folder].")
  29.  
  30. (defvar mh-before-quit-hook nil "\
  31. Invoked by \\[mh-quit] before quitting mh-e.  See also  mh-quit-hook")
  32.  
  33. (defvar mh-quit-hook nil "\
  34. Invoked after quitting mh-e by \\[mh-quit].  See also  mh-before-quit-hook")
  35.  
  36. (defvar mh-ins-string nil "\
  37. Temporarily set by `mh-insert-prefix' prior to running `mh-yank-hooks'.")
  38.  
  39. (defvar mh-yank-hooks (quote (lambda nil (save-excursion (goto-char (point)) (or (bolp) (forward-line 1)) (while (< (point) (mark)) (insert mh-ins-string) (forward-line 1))))) "\
  40. Hook to run citation function.
  41. Expects POINT and MARK to be set to the region to cite.")
  42.  
  43. (defvar mh-clean-message-header nil "\
  44. *Non-nil means clean headers of messages that are displayed or inserted.
  45. The variables `mh-visible-headers' and `mh-invisible-headers' control what
  46. is removed.")
  47.  
  48. (defvar mh-visible-headers nil "\
  49. *If non-nil, contains a regexp specifying the headers to keep when cleaning.
  50. Only used if `mh-clean-message-header' is non-nil.  Setting this variable
  51. overrides `mh-invisible-headers'.")
  52.  
  53. (defvar mhl-formfile nil "\
  54. *Name of format file to be used by mhl to show messages.
  55. A value of T means use the default format file.
  56. Nil means don't use mhl to format messages.")
  57.  
  58. (defvar mh-lpr-command-format "lpr -p -J '%s'" "\
  59. *Format for Unix command that prints a message.
  60. The string should be a Unix command line, with the string '%s' where
  61. the job's name (folder and message number) should appear.  The message text
  62. is piped to this command.")
  63.  
  64. (defvar mh-print-background nil "\
  65. *Print messages in the background if non-nil.
  66. WARNING: do not delete the messages until printing is finished;
  67. otherwise, your output may be truncated.")
  68.  
  69. (defvar mh-summary-height 4 "\
  70. *Number of lines in summary window (including the mode line).")
  71.  
  72. (defvar mh-recenter-summary-p nil "\
  73. *Recenter summary window when the show window is toggled off if non-nil.")
  74.  
  75. (defvar mh-ins-buf-prefix "> " "\
  76. *String to put before each non-blank line of a yanked or inserted message.
  77. Used when the message is inserted in an outgoing letter.")
  78.  
  79. (defvar mh-do-not-confirm nil "\
  80. *Non-nil means do not prompt for confirmation before some commands.
  81. Only affects certain innocuous commands.")
  82.  
  83. (defvar mh-bury-show-buffer t "\
  84. *Non-nil means that the displayed show buffer for a folder is buried.")
  85.  
  86. (defvar mh-delete-yanked-msg-window nil "\
  87. *Controls window display when a message is yanked by \\[mh-yank-cur-msg].
  88. If non-nil, yanking the current message into a draft letter deletes any
  89. windows displaying the message.")
  90.  
  91. (defvar mh-yank-from-start-of-msg t "\
  92. *Controls which part of a message is yanked by \\[mh-yank-cur-msg].
  93. If non-nil, include the entire message.  If the symbol `body', then yank the
  94. message minus the header.  If nil, yank only the portion of the message
  95. following the point.  If the show buffer has a region, this variable is
  96. ignored.")
  97.  
  98. (defvar mh-reply-default-reply-to nil "\
  99. *Sets the person or persons to whom a reply will be sent.
  100. If nil, prompt for recipient. If non-nil, then \\[mh-reply] will use this
  101. value and it should be one of \"from\", \"to\", or \"cc\".")
  102.  
  103. (defvar mh-recursive-folders nil "\
  104. *If non-nil, then commands which operate on folders do so recursively.")
  105.  
  106. (defvar mh-unshar-default-directory "" "\
  107. *Default for directory name prompted for by mh-unshar-msg.")
  108.  
  109. (defvar mh-cmd-note 4 "\
  110. Offset to insert notation.")
  111.  
  112. (defvar mh-note-repl "-" "\
  113. String whose first character is used to notate replied to messages.")
  114.  
  115. (defvar mh-note-forw "F" "\
  116. String whose first character is used to notate forwarded messages.")
  117.  
  118. (defvar mh-note-dist "R" "\
  119. String whose first character is used to notate redistributed messages.")
  120.  
  121. (defvar mh-good-msg-regexp "^....[^D^]" "\
  122. Regexp specifiying the scan lines that are 'good' messages.")
  123.  
  124. (defvar mh-deleted-msg-regexp "^....D" "\
  125. Regexp matching scan lines of deleted messages.")
  126.  
  127. (defvar mh-refiled-msg-regexp "^....\\^" "\
  128. Regexp matching scan lines of refiled messages.")
  129.  
  130. (defvar mh-valid-scan-line "^ *[0-9]" "\
  131. Regexp matching scan lines for messages (not error messages).")
  132.  
  133. (defvar mh-msg-number-regexp "^ *\\([0-9]+\\)" "\
  134. Regexp to find the number of a message in a scan line.
  135. The message's number must be surrounded with \\( \\)")
  136.  
  137. (defvar mh-msg-search-regexp "^[^0-9]*%d[^0-9]" "\
  138. Format string containing a regexp matching the scan listing for a message.
  139. The desired message's number will be an argument to format.")
  140.  
  141. (defvar mh-flagged-scan-msg-regexp "^....\\D\\|^....\\^\\|^....\\+\\|^.....%" "\
  142. Regexp matching flagged scan lines.
  143. Matches lines marked as deleted, refiled, in a sequence, or the cur message.")
  144.  
  145. (defvar mh-cur-scan-msg-regexp "^....\\+" "\
  146. Regexp matching scan line for the cur message.")
  147.  
  148. (defvar mh-show-buffer-mode-line-buffer-id "{%%b}  %s/%d" "\
  149. Format string to produce `mode-line-buffer-id' for show buffers.
  150. First argument is folder name.  Second is message number.")
  151.  
  152. (defvar mh-partial-folder-mode-line-annotation "select" "\
  153. Annotation when displaying part of a folder.
  154. The string is displayed after the folder's name.  NIL for no annotation.")
  155.  
  156. (defvar mh-invisible-headers "^Received: \\|^Message-Id: \\|^Remailed-\\|^Via: \\|^Mail-from: \\|^Return-Path: \\|^In-Reply-To: \\|^Resent-" "\
  157. Regexp matching lines in a message header that are not to be shown.
  158. If `mh-visible-headers' is non-nil, it is used instead to specify what
  159. to keep.")
  160.  
  161. (defvar mh-rejected-letter-start (concat "^   ----- Unsent message follows -----$" "\\|^------- Unsent Draft$" "\\|^  --- The unsent message follows ---$") "\
  162. Regexp specifying the beginning of the wrapper around a returned letter.
  163. This wrapper is generated by the mail system when rejecting a letter.")
  164.  
  165. (defvar mh-to-field-choices (quote ((116 . "To:") (115 . "Subject:") (99 . "Cc:") (98 . "Bcc:") (102 . "Fcc:"))) "\
  166. A-list of (character . field name) strings for mh-to-field.")
  167.  
  168. (defvar mh-user-path "" "\
  169. User's mail folder.")
  170.  
  171. (defvar mh-last-destination nil "\
  172. Destination of last refile or write command.")
  173.  
  174. (defvar mh-folder-mode-map (make-keymap) "\
  175. Keymap for MH folders.")
  176.  
  177. (defvar mh-letter-mode-map (copy-keymap text-mode-map) "\
  178. Keymap for composing mail.")
  179.  
  180. (defvar mh-pick-mode-map (make-sparse-keymap) "\
  181. Keymap for searching folder.")
  182.  
  183. (defvar mh-letter-mode-syntax-table nil "\
  184. Syntax table used while in mh-e letter mode.")
  185.  
  186. (if mh-letter-mode-syntax-table nil (setq mh-letter-mode-syntax-table (make-syntax-table text-mode-syntax-table)) (set-syntax-table mh-letter-mode-syntax-table) (modify-syntax-entry 37 "." mh-letter-mode-syntax-table))
  187.  
  188. (defvar mh-folder-list nil "\
  189. List of folder names for completion.")
  190.  
  191. (defvar mh-draft-folder nil "\
  192. Name of folder containing draft messages.
  193. NIL means do not use draft folder.")
  194.  
  195. (defvar mh-unseen-seq nil "\
  196. Name of the unseen sequence.")
  197.  
  198. (defvar mh-previous-window-config nil "\
  199. Window configuration before mh-e command.")
  200.  
  201. (defvar mh-previous-seq nil "\
  202. Name of the sequence to which a message was last added.")
  203.  
  204. (defmacro mh-push (v l) (byte-code "Âà   EE‡" [l v setq cons] 5))
  205.  
  206. (defmacro mh-when (pred &rest body) (byte-code "    BD‡" [pred body cond] 3))
  207.  
  208. (defmacro with-mh-folder-updating (save-modification-flag-p &rest body) (byte-code "@‰ˆÂÃÄÅÆ    \"ƒǂÈEE‡" [save-modification-flag-p body let ((folder-updating-mod-flag (buffer-modified-p))) prog1 append (let ((buffer-read-only nil) (buffer-file-name nil))) (mh-set-folder-modified-p folder-updating-mod-flag) (mh-set-folder-modified-p nil)] 6))
  209.  
  210. (defun mh-mapc (func list) (byte-code "…    @\"ˆA‰ˆ‚‡" [list func funcall] 4))
  211.  
  212. (defun mh-rmail (&optional arg) "\
  213. Inc(orporate) new mail (no arg) or scan a MH mail box (arg given).
  214. This front end uses the MH mail system, which uses different conventions
  215. from the usual mail system." (interactive "P") (byte-code "ÁˆÂ ˆƒÃÄ!‚Å ‡" [arg nil mh-find-path call-interactively mh-visit-folder mh-inc-folder] 4))
  216.  
  217. (defun mh-smail nil "\
  218. Compose and send mail with the MH mail system." (interactive) (byte-code "ÀˆÁ ˆÂÃ!‡" [nil mh-find-path call-interactively mh-send] 3))
  219.  
  220. (defun mh-smail-other-window nil "\
  221. Compose and send mail in other window with the MH mail system." (interactive) (byte-code "ÀˆÁ ˆÂÃ!‡" [nil mh-find-path call-interactively mh-send-other-window] 3))
  222.  
  223. (defun mh-burst-digest nil "\
  224. Burst apart the current message, which should be a digest.
  225. The message is replaced by its table of contents and the letters from the
  226. digest are inserted into the folder after that message." (interactive) (byte-code "ĈÅÁ!Æ
  227. !ˆÇÁ!ˆÈÉ!ˆÊË
  228. Ì$ˆÍ
  229. ÎÏ \"\"ˆÈÐ!)‡" [digest t mh-current-folder mh-first-msg-num nil mh-get-msg-num mh-process-or-undo-commands mh-set-folder-modified-p message "Bursting digest..." mh-exec-cmd "burst" "-inplace" mh-scan-folder format "%d-last" "Bursting digest...done"] 10))
  230.  
  231. (defun mh-copy-msg (prefix-provided msg-or-seq dest) "\
  232. Copy specified MESSAGE(s) to another FOLDER without deleting them.
  233. Default is the displayed message.  If optional prefix argument is
  234. provided, then prompt for the message sequence." (interactive (byte-code "ƒ ÂÃÁ\"‚ÄÁ!ÅÆÇÁ#E‡" [current-prefix-arg t mh-read-seq-default "Copy" mh-get-msg-num mh-prompt-for-folder "Copy to" ""] 8)) (byte-code "LjÈÉ
  235. ÊË &ˆƒÌ
  236. Í#‚Î
  237. Í#‡" [current-prefix-arg t msg-or-seq mh-current-folder dest prefix-provided mh-cmd-note nil mh-exec-cmd "refile" "-link" "-src" mh-notate-seq 67 mh-notate] 7))
  238.  
  239. (defun mh-delete-msg (msg-or-seq) "\
  240. Mark the specified MESSAGE(s) for subsequent deletion and move to the next.
  241. Default is the displayed message.  If optional prefix argument is
  242. given then prompt for the message sequence." (interactive (byte-code "ƒ ÂÃÁ\"‚ÄÁ!C‡" [current-prefix-arg t mh-read-seq-default "Delete" mh-get-msg-num] 3)) (byte-code "ÈÄ
  243. !ā
  244. !‚ÆÅ
  245. \"ˆÇ ‡" [current-prefix-arg t msg-or-seq nil numberp mh-delete-a-msg mh-map-to-seq-msgs mh-next-msg] 5))
  246.  
  247. (defun mh-delete-msg-no-motion (msg-or-seq) "\
  248. Mark the specified MESSAGE(s) for subsequent deletion.
  249. Default is the displayed message.  If optional prefix argument is
  250. provided, then prompt for the message sequence." (interactive (byte-code "ƒ ÂÃÁ\"‚ÄÁ!C‡" [current-prefix-arg t mh-read-seq-default "Delete" mh-get-msg-num] 3)) (byte-code "ÈÄ
  251. !ā
  252. !‚ÆÅ
  253. \"‡" [current-prefix-arg t msg-or-seq nil numberp mh-delete-a-msg mh-map-to-seq-msgs] 5))
  254.  
  255. (defun mh-delete-msg-from-seq (prefix-provided msg-or-seq &optional from-seq) "\
  256. Delete MESSAGE (default: displayed message) from SEQUENCE.
  257. If optional prefix argument provided, then delete all messages
  258. from a sequence." (interactive (byte-code "    ƒÃÄÂ\"‚ÅÂ!?…ÃÆÂ\"E)‡" [argp current-prefix-arg t mh-read-seq-default "Delete" mh-get-msg-num "Delete from"] 7)) (byte-code "ƈ ƒ Ç !‚È \"‡" [argp current-prefix-arg t prefix-provided msg-or-seq from-seq nil mh-remove-seq mh-remove-msg-from-seq] 4))
  259.  
  260. (defun mh-edit-again (msg) "\
  261. Clean-up a draft or a message previously sent and make it resendable." (interactive (byte-code "ÁÀ!C‡" [t mh-get-msg-num] 2)) (byte-code "Lj
  262. È …É    \"ƒ)ÊËÌ!!À\"ˆÍÎÏ\"!ˆÐ ‚1ÑÒÌ!Ç#ÓeÔÇ#ˆebˆÕÇ!ˆÖ ×    ÇÇÇÇÇÇ &
  263. +‡" [t from-folder mh-current-folder config draft mh-draft-folder msg nil current-window-configuration equal pop-to-buffer find-file-noselect mh-msg-filename rename-buffer format "draft-%d" buffer-name mh-read-draft "clean-up" mh-clean-msg-header "^Date:\\|^Received:\\|^Message-Id:\\|^From:\\|^Delivery-Date:" set-buffer-modified-p mh-compose-and-send-mail ""] 23))
  264.  
  265. (defun mh-execute-commands nil "\
  266. Process outstanding delete and refile requests." (interactive) (byte-code "ȅĠˆÅ    !ˆÆ ˆÇ ˆÈ ˆÂ‡" [mh-narrowed-to-seq mh-current-folder t nil mh-widen mh-process-commands mh-set-scan-mode mh-goto-cur-msg mh-make-folder-mode-line] 6))
  267.  
  268. (defun mh-extract-rejected-mail (msg) "\
  269. Extract a letter returned by the mail system and make it resendable.
  270. Default is the displayed message." (interactive (byte-code "ÁÀ!C‡" [t mh-get-msg-num] 2)) (byte-code "ƈ
  271. È ÉÊË!Æ#ebˆÌÆÀ#ƒ,ÍÎ!ˆÏe`\"ˆÐeÑÆ#‚/ÒÓ!ˆebˆÔÆ!ˆÕ Ö    ×Ø!×Ù!×Ú!ÆÆ &
  272. +‡" [t from-folder mh-current-folder config draft msg nil mh-rejected-letter-start current-window-configuration mh-read-draft "extraction" mh-msg-filename re-search-forward forward-char 1 delete-region mh-clean-msg-header "^Date:\\|^Received:\\|^Message-Id:\\|^From:\\|^Sender:\\|^Return-Path:" message "Does not appear to be a rejected letter." set-buffer-modified-p mh-compose-and-send-mail "" mh-get-field "To" "From" "cc"] 23))
  273.  
  274. (defun mh-first-msg nil "\
  275. Move to the first message." (interactive) (byte-code "Àˆeb‡" [nil] 1))
  276.  
  277. (defun mh-forward (prefix-provided msg-or-seq to cc) "\
  278. Forward MESSAGE(s) (default: displayed message).
  279. If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ƒ ÂÃÁ\"‚ÄÁ!ÅÆ!ÅÇ!F‡" [current-prefix-arg t mh-read-seq-default "Forward" mh-get-msg-num read-string "To: " "Cc: "] 8)) (byte-code "ˈ Ñ ÒÓ\"Ô!?†ÕÖ!ƒ7×ØÙ $ˆÚÛÁ#ÜÝ    Þ
  280. $ˆßË!ˆ‚<ÚÛË#ebˆàá!ˆâã!ˆä`d\"ˆŠåæ!) çè \"Šåé!)…r êSO‰ ˆë ˆŠÜéìí #\")ˆî ˆƒ–ïð!ñÁ#‚œïñÁ#ˆòÛ
  281.      
  282. ó &
  283. +,‡" [current-prefix-arg t folder mh-current-folder config draft-name mh-user-path draft msg-or-seq to cc nil subject trim forw-subject prefix-provided mh-note-forw current-window-configuration expand-file-name "draft" file-exists-p y-or-n-p "The file 'draft' exists.  Discard it? " mh-exec-cmd "forw" "-build" mh-read-draft "" mh-insert-fields "To:" "Cc:" set-buffer-modified-p re-search-forward "^------- Forwarded Message" forward-line -1 narrow-to-region mh-get-field "From:" string-match "<" "Subject:" 0 widen format "[%s: %s]" delete-other-windows mh-add-msgs-to-seq mh-seq-to-msgs forwarded mh-compose-and-send-mail "Forwarded:"] 33))
  284.  
  285. (defun mh-goto-msg (number &optional no-error-if-no-message dont-show) "\
  286. Position the cursor at message NUMBER.
  287. Non-nil second argument means do not signal an error if message does not exist.
  288. Non-nil third argument means not to show the message.
  289. Return non-nil if cursor is at message." (interactive "NGoto message: ") (byte-code "ÁˆÈÁ!`É !… UƒłN…) W…)Ê ÁÅ#ƒ0łN…? V…?Ë ÁÅ#ƒFłNdbˆË ÁÅ#ƒbÌ ˆ?…]Í !ˆÅ‚q
  290. bˆ?…oÎÏ \"ˆÁ+‡" [cur-msg nil starting-place msg-pattern number t dont-show no-error-if-no-message mh-get-msg-num mh-msg-search-pat re-search-forward re-search-backward beginning-of-line mh-maybe-show error "No message %d"] 10))
  291.  
  292. (defun mh-inc-folder (&optional maildrop-name) "\
  293. Inc(orporate) new mail into +inbox.
  294. Optional prefix argument specifies an alternate maildrop from the default.
  295. If this is given, incorporate mail into the current folder, rather
  296. than +inbox.  Run `mh-inc-folder-hook' after incorporating new mail." (interactive (byte-code "…
  297. ÂÃÄ    \"!C‡" [current-prefix-arg mh-user-path expand-file-name read-file-name "inc mail from file: "] 4)) (byte-code "ňƠ ?…+ÇÈ!?ƒÉÈ!ˆ
  298. ‰‚+pÇÈ!=?…+ÊÈ!ˆ
  299. ‰)ˆË !ˆÌÍ!‡" [current-prefix-arg mh-user-path config maildrop-name mh-previous-window-config nil current-window-configuration get-buffer "+inbox" mh-make-folder switch-to-buffer mh-get-new-mail run-hooks mh-inc-folder-hook] 8))
  300.  
  301. (defun mh-kill-folder nil "\
  302. Remove the current folder." (interactive) (byte-code "Ĉ† ÆÇÈ    \"!ƒ8    ÉÃ!ˆÊË
  303. \"ˆÌ
  304. !ˆÍÎ
  305. \"ˆÉÄ!ˆÏ!…0Ð!ˆÐ
  306. !)‚;ÍÑ!‡" [mh-do-not-confirm mh-current-folder folder t nil mh-show-buffer yes-or-no-p format "Remove folder %s? " mh-set-folder-modified-p mh-exec-cmd-daemon "rmf" mh-remove-folder-from-folder-list message "Folder %s removed" get-buffer kill-buffer "Folder not removed"] 12))
  307.  
  308. (defun mh-last-msg nil "\
  309. Move to the last message." (interactive) (byte-code "Àˆdbˆo?…ÁÂ!…ÃÄ!ˆ‚‡" [nil looking-at "^$" forward-line -1] 4))
  310.  
  311. (defun mh-list-folders nil "\
  312. List mail folders." (interactive) (byte-code "ˆÐŠÄÃ!ˆÅ ˆÆÇ!ˆÈÉÀ    ƒÊ‚Ë#ˆebˆÆÌ!)‘‡" [t mh-recursive-folders nil " *mh-temp*" switch-to-buffer erase-buffer message "Listing folders..." mh-exec-cmd-output "folders" "-recurse" "-norecurse" "Listing folders...done"] 8))
  313.  
  314. (defun mh-msg-is-in-seq (msg) "\
  315. Display the sequences that contain MESSAGE (default: displayed message)." (interactive (byte-code "ÁÀ!C‡" [t mh-get-msg-num] 2)) (byte-code "ˆÃÄ    ÅÆÇÈ    !!É##‡" [t msg nil message "Message %d is in sequences: %s" mapconcat concat mh-list-to-string mh-seq-containing-msg " "] 9))
  316.  
  317. (defun mh-narrow-to-seq (seq) "\
  318. Restrict display of this folder to just messages in a sequence.
  319. Reads which sequence.  Use \\[mh-widen] to undo this command." (interactive (byte-code "ÁÂÀ\"C‡" [t mh-read-seq "Narrow to"] 3)) (byte-code "ĈdÈ ÄÄÉ!ƒ0Ê    \"ˆË    d\"ˆÌÍ!!ˆÎÄ!ˆ‰‚7ÏÐÍ!\"*Ñ
  320. !ˆ))‡" [t eob folder-updating-mod-flag buffer-read-only nil buffer-file-name seq mh-narrowed-to-seq buffer-modified-p mh-seq-to-msgs mh-copy-seq-to-point narrow-to-region mh-make-folder-mode-line symbol-name mh-recenter error "No messages in sequence `%s'" mh-set-folder-modified-p] 12))
  321.  
  322. (defun mh-next-undeleted-msg (&optional arg) "\
  323. Move to next undeleted message in window." (interactive "P") (byte-code "ÈÆÇ!!ˆÈ‰ˆÉ
  324. ÃÊ$ƒË ˆÌ ‚*ÆÍ!ˆÎ!…*Ï!‡" [arg mh-next-direction mh-good-msg-regexp nil t mh-show-buffer forward-line prefix-numeric-value forward re-search-forward 0 beginning-of-line mh-maybe-show -1 get-buffer delete-windows-on] 9))
  325.  
  326. (defun mh-pack-folder (range) "\
  327. Renumber the messages of a folder to be 1..n.
  328. First, offer to execute any outstanding commands for the current folder.
  329. If optional prefix argument provided, prompt for the range of messages
  330. to display after packing.  Otherwise, show the entire folder." (interactive (byte-code "ƒ
  331. ÁÂ!‚ ÃC‡" [current-prefix-arg mh-read-msg-range "Range to scan after packing [all]? " "all"] 2)) (byte-code "ˆà   !ˆÄ ˆÅÆ!‡" [current-prefix-arg range nil mh-pack-folder-1 mh-goto-cur-msg message "Packing folder...done"] 4))
  332.  
  333. (defun mh-pipe-msg (prefix-provided command) "\
  334. Pipe the current message through the given shell COMMAND.
  335. If optional prefix argument is provided, send the entire message.
  336. Otherwise just send the message's body." (interactive (byte-code "ÁÂ!D‡" [current-prefix-arg read-string "Shell command on message: "] 3)) (byte-code "ňŠÆÇÁ!
  337. \"ˆebˆ ?…ÈÉ!ˆÊ`d Å$)‡" [current-prefix-arg t mh-current-folder prefix-provided command nil mh-display-msg mh-get-msg-num search-forward "
  338.  
  339. " shell-command-on-region] 8))
  340.  
  341. (defun mh-refile-msg (prefix-provided msg-or-seq dest) "\
  342. Refile MESSAGE(s) (default: displayed message) in FOLDER.
  343. If optional prefix argument provided, then prompt for message sequence." (interactive (byte-code "ƒ ÃÄÁ\"‚ÅÁ!ÆÇÈÉ
  344. @=ƒ Ê
  345. A!‚!ËÁ#!E‡" [current-prefix-arg t mh-last-destination mh-read-seq-default "Refile" mh-get-msg-num intern mh-prompt-for-folder "Destination" refile symbol-name ""] 10)) (byte-code "ÆˆÇ B‰ˆ ƒÈÉ #‚É \"ˆÊ ‡" [current-prefix-arg t mh-last-destination dest prefix-provided msg-or-seq nil refile mh-map-to-seq-msgs mh-refile-a-msg mh-next-msg] 4))
  346.  
  347. (defun mh-refile-or-write-again (msg) "\
  348. Re-execute the last refile or write command on the given MESSAGE.
  349. Default is the displayed message.  Use the same folder or file as the
  350. previous refile or write command." (interactive (byte-code "ÁÀ!C‡" [t mh-get-msg-num] 2)) (byte-code "È    ?…
  351. ÄÅ!ˆ    @Æ=ƒ Ç
  352.     A\"ˆÈÉ    A\"‚+Ê
  353.     A\"ˆÈË    A\"ˆÌ ‡" [t mh-last-destination msg nil error "No previous refile or write" refile mh-refile-a-msg message "Destination folder: %s" mh-write-msg-to-file "Destination: %s" mh-next-msg] 7))
  354.  
  355. (defun mh-reply (prefix-provided msg) "\
  356. Reply to a MESSAGE (default: displayed message).
  357. If optional prefix argument provided, then include the message in the reply
  358. using filter mhl.reply in your MH directory." (interactive (byte-code "ÂÁ!D‡" [current-prefix-arg t mh-get-msg-num] 3)) (byte-code "ňÓ †ÔÕÖÅÁ$    × 
  359. ØÙ!ˆÚ Û\"†*Ú Ü\"ƒFÝÞßàáâ ãä …AåæD&
  360. ‚ŒÚ ç\"ƒfÝÞßàáâ èç …aåæD&
  361. ‚ŒÚ é\"†qÚ ä\"…ŒÝÞßàáâ èäãê …ŠåæD& ˆëìíì\"Á#ïÅ!ˆðñ!ðò!ðó!ebˆôõ!ˆ ?…Áö \"ˆ÷ øÁ#ˆØù!ˆúÜ û
  362. &
  363. +),)‡" [current-prefix-arg t minibuffer-help-form reply-to mh-reply-default-reply-to nil folder mh-current-folder show-buffer mh-show-buffer config msg prefix-provided draft mh-user-path to subject cc mh-note-repl "from => Sender only
  364. to => Sender and primary recipients
  365. cc or all => Sender and all recipients" completing-read "Reply to whom: " (("from") ("to") ("cc") ("all")) current-window-configuration message "Composing a reply..." equal "from" "" apply mh-exec-cmd "repl" "-build" "-noquery" "-nodraftfolder" "-nocc" "all" "-filter" "mhl.reply" "to" "-cc" "cc" "me" mh-read-draft "reply" expand-file-name delete-other-windows set-buffer-modified-p mh-get-field "To:" "Subject:" "Cc:" mh-goto-header-end 1 mh-display-msg mh-add-msgs-to-seq answered "Composing a reply...done" mh-compose-and-send-mail "Replied:"] 33))
  366.  
  367. (defun mh-quit nil "\
  368. Quit mh-e.
  369. Start by running mh-before-quit-hook.  Restore the previous window
  370. configuration, if one exists.  Finish by running mh-quit-hook." (interactive) (byte-code "ÁˆÂÃ!ˆ…Ä!ˆÂÅ!‡" [mh-previous-window-config nil run-hooks mh-before-quit-hook set-window-configuration mh-quit-hook] 4))
  371.  
  372. (defun mh-page-digest nil "\
  373. Advance displayed message to next digested message." (interactive) (byte-code "ÁˆŠÃ ˆÄÅ!ˆÁÆÇÁÂ#…ÆÈÁÂ#?…$ÉÊ!ˆËÌ!)ˆÍÇÁÂ#ˆÎÏ!ˆÐÅ!ˆÉÊ!)‡" [case-fold-search nil t mh-show-message-in-other-window move-to-window-line 0 search-forward "
  374.  
  375. " "From:" other-window -1 error "No more messages" search-backward forward-line 2 mh-recenter] 11))
  376.  
  377. (defun mh-page-digest-backwards nil "\
  378. Back up displayed message to previous digested message." (interactive) (byte-code "ÁˆŠÃ ˆÄÅ!ˆÁÆ ˆÇÈÁÂ#…ÇÉÁÂ#?…'ÊË!ˆÌÍ!)ˆÇÈÁÂ#ˆÎÏ!ˆÐÅ!ˆÊË!)‡" [case-fold-search nil t mh-show-message-in-other-window move-to-window-line 0 beginning-of-line search-backward "
  379.  
  380. " "From:" other-window -1 error "No more messages" forward-line 2 mh-recenter] 12))
  381.  
  382. (defun mh-page-msg (&optional arg) "\
  383. Page the displayed message forwards.
  384. Scrolls ARG lines or a full screen if no argument is supplied." (interactive "P") (byte-code "ÁˆÂ!‡" [arg nil scroll-other-window] 2))
  385.  
  386. (defun mh-previous-page (&optional arg) "\
  387. Page the displayed message backwards.
  388. Scrolls ARG lines or a full screen if no argument is supplied." (interactive "P") (byte-code "ÁˆŠÂ ˆÃŽÄ!))‡" [arg nil mh-show-message-in-other-window ((byte-code "ÀÁ!‡" [other-window -1] 2)) scroll-down] 3))
  389.  
  390. (defun mh-previous-undeleted-msg (&optional arg) "\
  391. Move to previous undeleted message in window." (interactive "p") (byte-code "ˆƉˆÇ ˆÈ    ÂÉ $ƒÊ ‚ Ë!… Ì!‡" [mh-next-direction mh-good-msg-regexp nil arg t mh-show-buffer backward beginning-of-line re-search-backward 0 mh-maybe-show get-buffer delete-windows-on] 6))
  392.  
  393. (defun mh-print-msg (prefix-provided msg-or-seq) "\
  394. Print MESSAGE(s) (default: displayed message) on a line printer.
  395. If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ƒÂÃÄÅÁ\"!!‚ÆÁ!D‡" [current-prefix-arg t reverse mh-seq-to-msgs mh-read-seq-default "Print" mh-get-msg-num] 6)) (byte-code "ˈ
  396. ƒ ÍÎ!‚ÍÏ!ˆ
  397. ƒLÐÑÒÓ Ô#ÕÖ\";ƒ-Ð×\"‚.ØÙ !Ð
  398. ƒ@ÐÚ\"‚FÐÛ #\"&‚{ÐÜÕÖ\"Ý !;ƒcÐ×\"‚dØÐ
  399. ƒsÐÚ\"‚yÐÛ #\"%    ƒŠÞ
  400. ß #‚”à
  401. ËËËß &ˆ
  402. ƒ¢á â #‚¨ã â #ˆä åÁ#ˆ
  403. ƒ¹Íæ!‚¼Íç!)‡" [current-prefix-arg t prefix-provided print-command msg-or-seq mh-lib mhl-formfile mh-lpr-command-format mh-current-folder mh-print-background shell-file-name nil mh-cmd-note message "Printing sequence..." "Printing message..." format "(scan -clear %s ; %s -nobell -clear %s %s) | %s" mapconcat (lambda (msg) (byte-code "‡" [msg] 1)) " " expand-file-name "mhl" "-form %s" "" mh-msg-filenames "Sequence from %s" "%s/%d" "%s -nobell -clear %s %s | %s" mh-msg-filename mh-exec-cmd-daemon "-c" call-process mh-notate-seq 80 mh-notate mh-add-msgs-to-seq printed "Printing sequence...done" "Printing message...done"] 25))
  404.  
  405. (defun mh-put-msg-in-seq (prefix-provided from to) "\
  406. Add MESSAGE(s) (default: displayed message) to SEQUENCE.
  407. If optional prefix argument provided, then prompt for the message sequence." (interactive (byte-code "ƒÃÄÅÁ\"!‚ÆÁ!ÄÇÂ\"E‡" [current-prefix-arg t nil mh-seq-to-msgs mh-read-seq-default "Add messages from" mh-get-msg-num "Add to"] 8)) (byte-code "ˆ ‰ˆÆ \"‡" [current-prefix-arg t nil mh-previous-seq to from mh-add-msgs-to-seq] 3))
  408.  
  409. (defun mh-rescan-folder (&optional range) "\
  410. Rescan a folder after optionally processing the outstanding commands.
  411. If optional prefix argument is provided, prompt for the range of
  412. messages to display.  Otherwise show the entire folder." (interactive (byte-code "ƒ
  413. ÂÃ!‚ ÁC‡" [current-prefix-arg nil mh-read-msg-range "Range to scan [all]? "] 2)) (byte-code "ÁˆÅ‰ˆÆ †Ç\"‡" [current-prefix-arg nil mh-next-direction mh-current-folder range forward mh-scan-folder "all"] 3))
  414.  
  415. (defun mh-redistribute (to cc msg) "\
  416. Redistribute a letter.
  417. Depending on how your copy of MH was compiled, you may need to change the
  418. setting of the variable mh-redist-full-contents.  See its documentation." (interactive (byte-code "ÁÂ!ÁÃ!ÄÀ!E‡" [t read-string "Redist-To: " "Redist-Cc: " mh-get-msg-num] 6)) (byte-code "ƈˋ‡" [t folder mh-current-folder draft mh-redist-full-contents msg nil to cc mh-progs mh-note-dist ((byte-code "    ÊË ƒÌ !‚ÅÅ#ÍÎ!ˆÏÐÑ#ˆÒÓ\"?…,ÏÔÑ#ˆÕeÖÅ#ˆ× ˆØÙ!ˆ ƒUÚÛÅÎÅÜÝÞß àá\"ß $&‚kÚÛÅÎÅÜÝâÌ \"àá\"ß $&ˆã     äåæÝç#&ˆè
  419. !ˆØé!*‡" [folder mh-current-folder draft mh-redist-full-contents msg nil to cc mh-progs mh-note-dist mh-read-draft "redistribution" mh-msg-filename mh-goto-header-end 0 insert "Resent-To: " "
  420. " equal "" "Resent-cc: " mh-clean-msg-header "^Message-Id:\\|^Received:\\|^Return-Path:\\|^Sender:\\|^Date:\\|^From:" save-buffer message "Redistributing..." call-process "/bin/sh" "-c" format "mhdist=1 mhaltmsg=%s %s -push %s" buffer-file-name expand-file-name "send" "mhdist=1 mhaltmsg=%s mhannotate=1 %s -push %s" mh-annotate-msg "-component" "Resent:" "-text" "\"%s %s\"" kill-buffer "Redistributing...done"] 30))] 1))
  421.  
  422. (defun mh-write-msg-to-file (msg file) "\
  423. Append MESSAGE to the end of a FILE." (interactive (byte-code "ÄÀ!Å
  424. @=Į
  425. A!‚ ÇÈ    ÉÊ    \"#)D‡" [t default-dir mh-last-destination default-directory mh-get-msg-num write file-name-directory read-file-name "Save message in file: " expand-file-name "mail.out"] 9)) (byte-code "ȈÉ!Ê!ËB‰ˆŠÌÍ!qˆÎ ˆÏ !ˆÐed#)*‡" [t default-dir mh-last-destination default-directory file-name msg output-file file nil mh-msg-filename mh-expand-file-name write get-buffer-create " *mh-temp*" erase-buffer insert-file-contents append-to-file] 9))
  426.  
  427. (defun mh-search-folder (folder) "\
  428. Search FOLDER for messages matching a pattern." (interactive (byte-code "ÂÃÁ#C‡" [mh-current-folder t mh-prompt-for-folder "Search"] 4)) (byte-code "ĈÅÆ!ˆÇÈ !†ÉÊ!?ƒË ‚ÌÍ!ˆ ‰‡" [mh-current-folder t mh-searching-folder folder nil switch-to-buffer-other-window "pick-pattern" zerop buffer-size y-or-n-p "Reuse pattern? " mh-make-pick-template message ""] 8))
  429.  
  430. (defun mh-send (to cc subject) "\
  431. Compose and send a letter.
  432. The letter is composed in mh-letter-mode; see its documentation for more
  433. details.  If `mh-compose-letter-function' is defined, it is called on the
  434. draft and passed three arguments: to, subject, and cc." (interactive "sTo: 
  435. sCc: 
  436. sSubject: ") (byte-code "ĈŠÆ ˆÇ    
  437. $)‡" [config to cc subject nil current-window-configuration delete-other-windows mh-send-sub] 7))
  438.  
  439. (defun mh-send-other-window (to cc subject) "\
  440. Compose and send a letter in another window.." (interactive "sTo: 
  441. sCc: 
  442. sSubject: ") (byte-code "ňÁÆ
  443. Ç $)‡" [pop-up-windows t to cc subject nil mh-send-sub current-window-configuration] 6))
  444.  
  445. (defun mh-send-sub (to cc subject config) "\
  446. Do the real work of composing and sending a letter.
  447. Expects the TO, CC, and SUBJECT fields as arguments.
  448. CONFIG is the window configuration before sending mail." (byte-code "    ËÃ!ÌÍ!ˆÎÏÐÑÒ\"!ƒÑÒ\"‚1ÐÑÒ\"!ƒ.ÑÒ\"‚1ÓÔ!Ã#ÕÖ×Ø    &ˆÙÃ!ˆdbˆÌÚ!ˆÛ Ü
  449.     ÃÃ
  450. &
  451. )*‡" [folder mh-current-folder msg-num nil draft mh-user-path mh-lib to subject cc config mh-get-msg-num message "Composing a message..." mh-read-draft "message" file-exists-p expand-file-name "components" error "Can't find components file" mh-insert-fields "To:" "Subject:" "Cc:" set-buffer-modified-p "Composing a message...done" mh-compose-and-send-mail ""] 24))
  452.  
  453. (defun mh-show (&optional msg) "\
  454. Show MESSAGE (default: displayed message).
  455. Forces a two-window display with the folder window on top (size
  456. mh-summary-height) and the show buffer below it." (interactive) (byte-code "ƈ?… ÈÁ!‰ˆÁ‰ˆÉÊ!ˆËÌ !Í =?…\"Ј Ï ˆÐ \")ˆÑÒ!ˆÓ TÔ U?…BÕÓ Z!ˆÖÆ!ˆ>?…VB‰‡" [msg t mh-showing folder mh-current-folder mh-summary-height nil mh-seen-list mh-get-msg-num mh-set-mode-name "mh-e show" next-window minibuffer-window selected-window delete-other-windows mh-show-message-in-other-window mh-display-msg other-window -1 window-height screen-height shrink-window mh-recenter] 16))
  457.  
  458. (defun mh-sort-folder nil "\
  459. Sort the messages in the current folder by date." (interactive) (byte-code "ÈÄ!ˆÅ‰ˆÆÂ!ˆÇÈ!ˆÉÊ\"ˆÇË!ˆÌÍ\"‡" [mh-current-folder mh-next-direction t nil mh-process-or-undo-commands forward mh-set-folder-modified-p message "Sorting folder..." mh-exec-cmd "sortm" "Sorting folder...done" mh-scan-folder "all"] 8))
  460.  
  461. (defun mh-toggle-showing nil "\
  462. Toggle the scanning mode/showing mode of displaying messages." (interactive) (byte-code "Áˆƒ  ‚à‡" [mh-showing nil mh-set-scan-mode mh-show] 3))
  463.  
  464. (defun mh-undo (prefix-provided msg-or-seq) "\
  465. Undo the deletion or refile of the specified MESSAGE(s).
  466. Default is the displayed message.  If optional prefix argument is
  467. provided, then prompt for the message sequence." (interactive (byte-code "ƒ ÂÃÁ\"‚ÄÁ!D‡" [current-prefix-arg t mh-read-seq-default "Undo" mh-get-msg-num] 4)) (byte-code "Ɉ
  468. ƒÊËKÌ !\"‚p`Í ˆÎ!†:Î!†:Ï=…*o†:Ð=…:ŠÑ ˆm)?…PÑÏ=ƒJ҂KÓ!ˆ‚ˆÎ!†[Î!ƒiËÔÁ!!ˆÕ ‚o bˆÖ×!)ˆÊØ\"ˆÙ ?…€ÚÉ!‡" [current-prefix-arg t prefix-provided msg-or-seq original-position mh-deleted-msg-regexp mh-refiled-msg-regexp mh-next-direction mh-refile-list nil mh-mapc mh-undo-msg mh-seq-to-msgs beginning-of-line looking-at forward backward forward-line -1 1 mh-get-msg-num mh-maybe-show error "Nothing to undo" (lambda (elt) (byte-code "Â!?…à   \"‰‡" [elt mh-refile-list mh-seq-to-msgs delq] 4)) mh-outstanding-commands-p mh-set-folder-modified-p] 18))
  469.  
  470. (defun mh-undo-msg (msg) (byte-code "    >ƒÅ    \"‰ˆÆÇÂ#‚ÈÉ \"ˆÊË #‡" [msg mh-delete-list t mh-refile-list mh-cmd-note delq mh-remove-msg-from-seq deleted mh-mapc (lambda (dest) (byte-code "à   Â#‡" [msg dest t mh-remove-msg-from-seq] 4)) mh-notate 32] 7))
  471.  
  472. (defun mh-undo-folder (&rest ignore) "\
  473. Undo all commands in current folder." (interactive) (byte-code "ˆ†    ÊË!ƒ,ÂÂẨˆÍ ÂÂÎÉ!*ÏÂ!ˆ)‚3ÐÑ!ˆÒÓ!‡" [mh-do-not-confirm mh-delete-list nil mh-refile-list mh-seq-list mh-next-direction folder-updating-mod-flag buffer-read-only buffer-file-name t yes-or-no-p "Undo all commands in folder? " forward buffer-modified-p mh-unmark-all-headers mh-set-folder-modified-p message "Commands not undone." sit-for 2] 7))
  474.  
  475. (defun mh-unshar-msg (dir) "\
  476. Unpack the shar file contained in the current message into directory DIR." (interactive (byte-code "ÂÃÁ$C‡" [mh-unshar-default-directory nil read-file-name "Unshar message in directory: "] 5)) (byte-code "ÁˆÅÆÂ! \"ˆÇ !‡" [mh-unshar-default-directory nil t mh-current-folder dir mh-display-msg mh-get-msg-num mh-unshar-buffer] 4))
  477.  
  478. (defun mh-unshar-buffer (dir) (byte-code "ebˆÆÇÀÁ#†&ÆÈÀÁ#…ÉÊ!†&ÆËÀÁ#†&ÆÌÀÁ#ƒtÍ !Ј`ÏÐ!ŠqˆÍ !‰ˆÑ ˆÒ
  479. !ƒQÓÔ Õ#‚^ÓÖ Õ#ˆ×ØÀÁ
  480. %)ˆÙÚ!Û\"ˆÜ dÝÀÁ&+‚wÞß!‡" [nil t default-directory dir start log-buffer re-search-forward "^#![     ]*/bin/sh" "^[^a-z0-9\"]*cut here" forward-line 1 "^#" "^: " expand-file-name beginning-of-line get-buffer-create "*Unshar Output*" erase-buffer file-directory-p insert "cd " "
  481. " "mkdir " call-process "mkdir" set-window-start display-buffer 0 call-process-region "sh" error "Cannot find start of shar."] 23))
  482.  
  483. (defun mh-visit-folder (folder &optional range) "\
  484. Visit FOLDER and display RANGE of messages.
  485. Assumes mh-e has already been initialized." (interactive (byte-code "ÁÂÃÀ#ÄÅ!D‡" [t mh-prompt-for-folder "Visit" "+inbox" mh-read-msg-range "Range [all]? "] 4)) (byte-code "ňƠÇ
  486. † È\"ˆ    ‰)ˆÅ‡" [t config folder range mh-previous-window-config nil current-window-configuration mh-scan-folder "all"] 4))
  487.  
  488. (defun mh-widen nil "\
  489. Remove restrictions from the current folder, thereby showing all messages." (interactive) (byte-code "ȅÅ ÃÃÆed\"ˆÇ ˆÈ *É    !ˆ)ˆÃ‰‡" [mh-narrowed-to-seq folder-updating-mod-flag buffer-read-only nil buffer-file-name buffer-modified-p delete-region widen mh-make-folder-mode-line mh-set-folder-modified-p] 7))
  490.  
  491. (defun mh-delete-a-msg (msg) (byte-code "ŠÇÁÂ#ˆÈ !…ÉÊ\"ˆÈ !ƒÁ‚2ËÂ!ˆB‰ˆÌÍÂ#ˆÎÏ#)‡" [msg nil t mh-refiled-msg-regexp mh-deleted-msg-regexp mh-delete-list mh-cmd-note mh-goto-msg looking-at error "Message %d is refiled.  Undo refile before deleting." mh-set-folder-modified-p mh-add-msgs-to-seq deleted mh-notate 68] 10))
  492.  
  493. (defun mh-refile-a-msg (msg destination) (byte-code "ŠÉÁÂ#ˆÊ !ƒËÌ\"‚dÊ !ƒ;ÍÎÏ#!ƒ5ÐÑÒÂ!ÓÔÕ!&‚8Ö×!‚dØÂ!ˆ>?…NB‰ˆÙ!>?…]ÚÂ#ˆÛÜ#)‡" [msg nil t mh-deleted-msg-regexp mh-refiled-msg-regexp destination mh-current-folder mh-refile-list mh-cmd-note mh-goto-msg looking-at error "Message %d is deleted.  Undo delete before moving." y-or-n-p format "Message %d already refiled.  Copy to %s as well? " mh-exec-cmd "refile" mh-get-msg-num "-link" "-src" symbol-name message "Message not copied." mh-set-folder-modified-p mh-seq-to-msgs mh-add-msgs-to-seq mh-notate 94] 17))
  494.  
  495. (defun mh-display-msg (msg-num folder) (byte-code "qˆ
  496. Õ
  497. !      Ö    !?…(×Ø
  498. \"ˆÙ !ˆ…6Úp!ˆÛ    \"?…±Ü ˆÝ ˆÐ‰ˆÞ ˆ    ƒo    ;ƒeßàáâã        &‚lßàáâ    $‚sä    !ˆebˆ ƒ‡åe#ˆeb‚—ÑæçÐÑ#ˆè ˆéê!)ˆëÐ!ˆ    ‰ˆìÐ!ˆí
  499. #C‰.‡" [folder formfile mhl-formfile clean-message-header mh-clean-message-header invisible-headers mh-invisible-headers visible-headers mh-visible-headers msg-filename msg-num show-buffer mh-show-buffer mh-current-folder mh-bury-show-buffer buffer-file-name nil t case-fold-search mode-line-buffer-identification mh-show-buffer-mode-line-buffer-id mh-msg-filename file-exists-p error "Message %d does not exist" switch-to-buffer bury-buffer equal clear-visited-file-modtime unlock-buffer erase-buffer mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" "-form" insert-file-contents mh-clean-msg-header re-search-forward "^To:\\|^From:\\|^Subject:\\|^Date:" beginning-of-line mh-recenter 0 set-buffer-modified-p set-mark format] 22))
  500.  
  501. (defun mh-invalidate-show-buffer nil (byte-code "Ã!…ŠqˆÂ‰)‡" [mh-show-buffer buffer-file-name nil get-buffer] 3))
  502.  
  503. (defun mh-show-message-in-other-window nil (byte-code "Â!ˆ    … Ãp!‡" [mh-show-buffer mh-bury-show-buffer switch-to-buffer-other-window bury-buffer] 3))
  504.  
  505. (defun mh-clean-msg-header (start invisible-headers visible-headers) (byte-code "ÁŒ
  506. bˆÆÇÃÁ#…ÈÉ!ˆÊ
  507. `\"ˆebˆ ƒ\\`dW…YË ˆÌ !ƒAÍÉ!ˆÌÎ!…>ÍÉ!ˆ‚1‚UÏÉ!ˆÌÎ!…UË ˆÏÉ!ˆ‚Eˆ‚‚ÐÃÁ#…Ë ˆÏÉ!ˆÌÎ!…{Ë ˆÏÉ!ˆ‚kˆ‚\\ˆÑ ))‡" [case-fold-search t start nil visible-headers invisible-headers search-forward "
  508.  
  509. " backward-char 1 narrow-to-region beginning-of-line looking-at forward-line "^[     ]+" mh-delete-line re-search-forward unlock-buffer] 21))
  510.  
  511. (defun mh-delete-line (lines) (byte-code "Á`ŠÂ!ˆ`)\"‡" [lines delete-region forward-line] 4))
  512.  
  513. (defun mh-read-draft (use initial-contents delete-contents-file) (byte-code "ƒ
  514. ËÌÍ !Ã\"ˆÎÏÐÑ \"!ˆ    ‰)‚]ÒÓ\"ËÓ!ˆÔ …:ÕÖ!ƒ7×Æ!‚:ØÙ!ˆ ‰ˆÚ ˆÛ ˆÜ !…RÝ \"?…\\Þ !ˆß !)ˆ…ràá !†rÕÏâ    \"!?…†ã ˆÞ!ˆ
  515. …†ß!ˆäå!ˆ…‘栈Ѡ‡" [mh-draft-folder orig-default-dir default-directory t draft-name mh-user-path nil buffer-file-name initial-contents use delete-contents-file pop-to-buffer find-file-noselect mh-new-draft-name rename-buffer format "draft-%s" buffer-name expand-file-name "draft" buffer-modified-p y-or-n-p "Draft has been modified; kill anyway? " set-buffer-modified-p error "Draft preserved" clear-visited-file-modtime unlock-buffer file-exists-p equal insert-file-contents delete-file zerop buffer-size "A draft exists.  Use for %s? " erase-buffer auto-save-mode 1 save-buffer] 29))
  516.  
  517. (defun mh-new-draft-name nil (byte-code "ŠÂÃ!qˆÄ ˆÅÆÀ    Ç$ˆÈ`É S\")‡" [nil mh-draft-folder get-buffer-create " *mh-temp*" erase-buffer mh-exec-cmd-output "mhpath" "new" buffer-substring mark] 7))
  518.  
  519. (defun mh-next-msg nil (byte-code "Á=ƒ ÂÃ!‚ÄÃ!‡" [mh-next-direction forward mh-next-undeleted-msg 1 mh-previous-undeleted-msg] 3))
  520.  
  521. (defun mh-set-scan-mode nil (byte-code "Ä!…    Å!ˆÆÇ!ˆÂ‰ˆ …ÈÂ!‡" [mh-show-buffer mh-showing nil mh-recenter-summary-p get-buffer delete-windows-on mh-set-mode-name "mh-e scan" mh-recenter] 5))
  522.  
  523. (defun mh-maybe-show (&optional msg) (byte-code "…    !‡" [mh-showing msg mh-show] 2))
  524.  
  525. (defun mh-set-mode-name (mode-name-string) (byte-code "    ‰ˆŠÂ q)ˆÃÄ !‡" [mode-name mode-name-string other-buffer set-buffer-modified-p buffer-modified-p] 4))
  526.  
  527. (defvar mh-current-folder nil "\
  528. Name of current folder, a string.")
  529.  
  530. (defvar mh-show-buffer nil "\
  531. Buffer that displays mesage for this folder.")
  532.  
  533. (defvar mh-folder-filename nil "\
  534. Full path of directory for this folder.")
  535.  
  536. (defvar mh-showing nil "\
  537. If non-nil, show the message in a separate window.")
  538.  
  539. (defvar mh-next-seq-num nil "\
  540. Index of free sequence id.")
  541.  
  542. (defvar mh-delete-list nil "\
  543. List of msg numbers to delete.")
  544.  
  545. (defvar mh-refile-list nil "\
  546. List of folder names in mh-seq-list.")
  547.  
  548. (defvar mh-seq-list nil "\
  549. Alist of (seq . msgs) numbers.")
  550.  
  551. (defvar mh-seen-list nil "\
  552. List of displayed messages.")
  553.  
  554. (defvar mh-next-direction (quote forward) "\
  555. Direction to move to next message.")
  556.  
  557. (defvar mh-narrowed-to-seq nil "\
  558. Sequence display is narrowed to.")
  559.  
  560. (defvar mh-first-msg-num nil "\
  561. Number of first msg in buffer.")
  562.  
  563. (defvar mh-last-msg-num nil "\
  564. Number of last msg in buffer.")
  565.  
  566. (defun mh-make-folder (name) (byte-code "Æ!ˆÂ‰ˆÇ ˆÃ‰ˆÈ ˆÉÂ!ˆ‰ˆÊË!‡" [name buffer-read-only nil t buffer-file-name mh-folder-filename switch-to-buffer erase-buffer mh-folder-mode mh-set-folder-modified-p mh-set-mode-name "mh-e scan"] 6))
  567.  
  568. (put (quote mh-folder-mode) (quote mode-class) (quote special))
  569.  
  570. (defun mh-folder-mode nil "\
  571. Major mode for \"editing\" an MH folder scan listing.
  572. Messages can be marked for refiling and deletion.  However, both actions
  573. are deferred until you request execution with \\[mh-execute-commands].
  574. \\{mh-folder-mode-map}
  575.   A prefix argument (\\[universal-argument]) to delete, refile, list, or undo
  576. applies the action to a message sequence.
  577.  
  578. Variables controlling mh-e operation are (defaults in parentheses):
  579.  
  580.  mh-bury-show-buffer (t)
  581.     Non-nil means that the buffer used to display message is buried.
  582.     It will never be offered as the default other buffer.
  583.  
  584.  mh-clean-message-header (nil)
  585.     Non-nil means remove header lines matching the regular expression
  586.     specified in mh-invisible-headers from messages.
  587.  
  588.  mh-visible-headers (nil)
  589.     If non-nil, it contains a regexp specifying the headers that are shown in
  590.     a message if mh-clean-message-header is non-nil.  Setting this variable
  591.     overrides mh-invisible-headers.
  592.  
  593.  mh-do-not-confirm (nil)
  594.     Non-nil means do not prompt for confirmation before executing some
  595.     non-recoverable commands such as mh-kill-folder and mh-undo-folder.
  596.  
  597.  mhl-formfile (nil)
  598.     Name of format file to be used by mhl to show messages.
  599.     A value of T means use the default format file.
  600.     Nil means don't use mhl to format messages.
  601.  
  602.  mh-lpr-command-format (\"lpr -p -J '%s'\")
  603.     Format for command used to print a message on a system printer.
  604.  
  605.  mh-recenter-summary-p (nil)
  606.     If non-nil, then the scan listing is recentered when the window displaying
  607.     a messages is toggled off.
  608.  
  609.  mh-summary-height (4)
  610.     Number of lines in the summary window including the mode line.
  611.  
  612.  mh-ins-buf-prefix (\"> \")
  613.     String to insert before each non-blank line of a message as it is
  614.     inserted in a draft letter.
  615.  
  616. The value of mh-folder-mode-hook is called when a new folder is set up." (byte-code "È ˆÉ!ˆÊ‰ˆËÌ!ˆÍÎÏ ÐÑÒÏ \"ÓÔÕÏ !!ÖÂ×ØÙÂÚÂÛÂÜÂÝÞßÂàÂáÂâÂ&ˆÄ‰ˆãä!ˆÄ‰ˆåÆ!ˆæ‰ˆåÇ!ˆç‰ˆèé!‡" [mh-folder-mode-map major-mode nil truncate-lines t buffer-offer-save write-file-hooks revert-buffer-function kill-all-local-variables use-local-map mh-folder-mode mh-set-mode-name "mh-e folder" make-local-vars mh-current-folder buffer-name mh-show-buffer format "show-%s" mh-folder-filename file-name-as-directory mh-expand-file-name mh-showing mh-next-seq-num 0 mh-delete-list mh-refile-list mh-seq-list mh-seen-list mh-next-direction forward mh-narrowed-to-seq mh-first-msg-num mh-last-msg-num mh-previous-window-config auto-save-mode -1 make-local-variable (mh-execute-commands) mh-undo-folder run-hooks mh-folder-mode-hook] 38))
  617.  
  618. (defun make-local-vars (&rest pairs) (byte-code "…Á@!ˆ@A@LˆAA‰ˆ‚‡" [pairs make-variable-buffer-local] 4))
  619.  
  620. (defun mh-scan-folder (folder range) (byte-code "Ã!?ƒÄ!‚Å!ˆÆ!ˆÇ
  621. !ˆÈÉ !…7Ê
  622. Ë\"ƒ.ÌÍ\"‚3ÌÎ
  623. #ˆÏÐ!ˆÑ ‡" [folder t range get-buffer mh-make-folder mh-process-or-undo-commands switch-to-buffer mh-regenerate-headers zerop buffer-size equal "all" message "Folder %s is empty" "No messages in %s, range %s" sit-for 5 mh-goto-cur-msg] 13))
  624.  
  625. (defun mh-regenerate-headers (range) (byte-code "    ËÌ\"ˆÍ ÄÄЈÏÐÄÑÒÓÔ &ˆebˆÕÖ!ƒ/×!‚9ÕØ!†9×!ˆÙÚ!ˆÛÄ\"‰    ˆÜ ˆÝÞß\"ƒVĂX
  626. !*àÄ!ˆ)ˆËá\")‡" [folder mh-current-folder folder-updating-mod-flag buffer-read-only nil buffer-file-name range mh-valid-scan-line t mh-seq-list mh-partial-folder-mode-line-annotation message "Scanning %s..." buffer-modified-p erase-buffer mh-exec-cmd-output "scan" "-noclear" "-noheader" "-width" window-width looking-at "scan: no messages in" keep-lines "scan: " mh-delete-seq-locally cur mh-read-folder-sequences mh-notate-user-sequences mh-make-folder-mode-line equal "all" mh-set-folder-modified-p "Scanning %s...done"] 18))
  627.  
  628. (defun mh-get-new-mail (maildrop-name) (byte-code "`
  629. ÄΠÇÇÏ    ƒÐÑ        #‚\"ÐÒ    \"!ˆÓÇ!ˆÔ‰
  630. ˆdbˆ`     ƒJÕÖÇ    ×Ø    !ÙÚ Û&‚QÕÖÇÙÚ $ˆÏ    ƒaÐÜ        #‚eÐÝ    \"!ˆ bˆÞß!ƒ”à !ˆbˆÏá    ƒ„â‚…ã    ƒ    ‚ã#‚¿äåÇÄ#ƒ¢æç!‚¿èé!ˆê    Ä\"‰ˆë ˆà !ˆì ˆí ˆÄ‰)ˆ *î!ˆ)+‡" [point-before-inc folder mh-current-folder return-value t folder-updating-mod-flag buffer-read-only nil buffer-file-name maildrop-name mh-next-direction start-of-inc mh-valid-scan-line mh-seq-list buffer-modified-p message format "inc %s -file %s..." "inc %s..." mh-unmark-all-headers forward mh-exec-cmd-output "inc" "-file" expand-file-name "-width" window-width "-truncate" "inc %s -file %s...done" "inc %s...done" looking-at "inc: no mail" keep-lines "No new mail%s%s" " in " "" re-search-forward "^inc:" error "inc error" mh-delete-seq-locally cur mh-read-folder-sequences mh-notate-user-sequences mh-make-folder-mode-line mh-goto-cur-msg mh-set-folder-modified-p] 27))
  631.  
  632. (defun mh-make-folder-mode-line (&optional annotation) (byte-code "ŠÆ ˆÇÁ!‰ˆÈ ˆÇÁ!‰ˆÉed\"Ê˃%ÊÌ\"‚&Í Î !ƒ1ςC ÐVƒ?ÊÑ
  633. #‚CÊÒ\"$C‰))‡" [mh-first-msg-num nil mh-last-msg-num lines mode-line-buffer-identification annotation mh-first-msg mh-get-msg-num mh-last-msg count-lines format "{%%b%s}  %d msg%s" "/%s" "" zerop "s" 1 "s (%d-%d)" " (%d)"] 15))
  634.  
  635. (defun mh-unmark-all-headers (remove-all-flags) (byte-code "ŠÁd ZÁÆ ˆ`
  636. X…CÇ !ˆg‰ˆ…- È=†- É=†- Ê=†3 Ë=…<ÌÍ!ˆÎcˆÏ ˆ‚ +)‡" [case-fold-search nil last-line mh-cmd-note char remove-all-flags mh-first-msg forward-char 68 94 37 43 delete-char 1 " " forward-line] 6))
  637.  
  638. (defun mh-goto-cur-msg nil (byte-code "ÄÅ!@…ÆÁÂ#ƒ!ÇÂÈ #ˆÉÊ!ˆË!‚'Ì ˆÍÎ!)‡" [cur-msg t nil mh-cmd-note mh-seq-to-msgs cur mh-goto-msg mh-notate 43 mh-recenter 0 mh-maybe-show mh-last-msg message "No current message"] 8))
  639.  
  640. (defun mh-pack-folder-1 (range) (byte-code "Ã!ˆÄÅ!ˆÆÁ!ˆŠÇÈÉÊ$)ˆË
  641. !‡" [mh-current-folder t range mh-process-or-undo-commands message "Packing folder..." mh-set-folder-modified-p mh-exec-cmd-quiet " *mh-temp*" "folder" "-pack" mh-regenerate-headers] 8))
  642.  
  643. (defun mh-process-or-undo-commands (folder) (byte-code "qˆÂ ƒ    †ÃÄ!ƒÅ!‚Æ ‚Ç ‡" [folder mh-do-not-confirm mh-outstanding-commands-p y-or-n-p "Process outstanding deletes and refiles (or lose them)? " mh-process-commands mh-undo-folder mh-invalidate-show-buffer] 6))
  644.  
  645. (defun mh-process-commands (folder) (byte-code "ÌÍ\"ˆqˆÎ ÃÃ…Ï!…Ð\"ˆÑÒ\"ˆ…7ÓÔÕ$ˆÖ!ˆ× ØV…JÙÚÛÃ!†HÜC\"ˆÝ ˆÃÃÞ
  646. Ã\"    Ã‰ˆßË!ˆà ˆÌá\"*âÃ!ˆ)‡" [folder folder-updating-mod-flag buffer-read-only nil buffer-file-name mh-seen-list mh-unseen-seq mh-refile-list mh-delete-list mh-seq-list mh-current-folder t message "Processing deletes and refiles for %s..." buffer-modified-p mh-seq-to-msgs mh-undefine-sequence mh-mapc (lambda (dest) (byte-code "à   !…ÄÅÆÇ
  647. È    !&ˆÉ!)‡" [msgs dest folder mh-seq-to-msgs apply mh-exec-cmd "refile" "-src" symbol-name mh-delete-scan-msgs] 9)) apply mh-exec-cmd "rmm" mh-delete-scan-msgs buffer-size 0 mh-define-sequence cur mh-get-msg-num "last" mh-invalidate-show-buffer mh-read-folder-sequences mh-unmark-all-headers mh-notate-user-sequences "Processing deletes and refiles for %s...done" mh-set-folder-modified-p] 18))
  648.  
  649. (defun mh-delete-scan-msgs (msgs) (byte-code "ÃÄK\"‰ˆŠÅ ˆ…`dW…7ÆÇÁ!@\"ƒ1È`ŠÉ ˆ`)\"ˆA‰‚3É ˆ‚ )‡" [msgs nil t sort < mh-first-msg equal mh-get-msg-num delete-region forward-line] 10))
  650.  
  651. (defun mh-set-folder-modified-p (flag) "\
  652. Mark current folder as modified or unmodified according to FLAG." (byte-code "Á!‡" [flag set-buffer-modified-p] 2))
  653.  
  654. (defun mh-outstanding-commands-p nil (byte-code "†    ‡" [mh-delete-list mh-refile-list] 1))
  655.  
  656. (defvar mh-sent-from-folder nil "\
  657. Folder of msg associated with this letter.")
  658.  
  659. (defvar mh-sent-from-msg nil "\
  660. Number of msg associated with this letter.")
  661.  
  662. (defvar mh-send-args nil "\
  663. Extra arguments to pass to \"send\" command.")
  664.  
  665. (defvar mh-annotate-char nil "\
  666. Character to use to annotate mh-sent-from-msg.")
  667.  
  668. (defvar mh-annotate-field nil "\
  669. Field name for message annotation.")
  670.  
  671. (defun mh-letter-mode nil "\
  672. Mode for composing letters in mh-e.
  673. When you have finished composing, type \\[mh-send-letter] to send the letter.
  674.  
  675. Variables controlling this mode (defaults in parentheses):
  676.  
  677.  mh-delete-yanked-msg-window (nil)
  678.     If non-nil, \\[mh-yank-cur-msg] will delete any windows displaying
  679.     the yanked message.
  680.  
  681.  mh-yank-from-start-of-msg (t)
  682.     If non-nil, \\[mh-yank-cur-msg] will include the entire message.
  683.     If `body', just yank the body (no header).
  684.     If nil, only the portion of the message following the point will be yanked.
  685.     If there is a region, this variable is ignored.
  686.  
  687. Upon invoking mh-letter-mode, text-mode-hook and mh-letter-mode-hook are
  688. invoked with no args, if those values are non-nil.
  689.  
  690. \\{mh-letter-mode-map}" (interactive) (byte-code "ƈǠˆÈÀ!ˆÉP‰ˆÈÁ!ˆÉ    P‰ˆÈÊ!ˆÈË!ˆÈÌ!ˆÈÍ!ˆÈÎ!ˆÈÏ!ˆÐ
  691. !ˆÑ‰ˆÒÓ!ˆÔ !ˆÕÖ×\"ˆ…QÈÅ!ˆØ‰‡" [paragraph-start paragraph-separate mh-letter-mode-map major-mode mh-letter-mode-syntax-table auto-fill-hook nil kill-all-local-variables make-local-variable "^[     ]*[-_][-_][-_]+$\\|" mh-send-args mh-annotate-char mh-annotate-field mh-previous-window-config mh-sent-from-folder mh-sent-from-msg use-local-map mh-letter-mode mh-set-mode-name "mh-e letter" set-syntax-table run-hooks text-mode-hook mh-letter-mode-hook mh-auto-fill-for-letter] 16))
  692.  
  693. (defun mh-auto-fill-for-letter nil (byte-code "Á ˆÂ …ŠÃÀ!ˆÄÅÆ\")‡" [nil do-auto-fill mh-in-header-p beginning-of-line insert-char 9 1] 6))
  694.  
  695. (defun mh-in-header-p nil (byte-code "Š`ebˆÃÄÁÂ#ˆ`W))‡" [cur-point nil t re-search-forward "^--------"] 4))
  696.  
  697. (defun mh-to-field nil "\
  698. Move point to the end of a specified header field.
  699. The field is indicated by the previous keystroke.  Create the field if
  700. it does not exist.  Set the mark to point before moving." (interactive) (byte-code "ƈǠˆÈÉ    Ê\"
  701. \"AÄËÄ\"ƒD`ÌÍ!ˆÎ`\")ˆÉ    Ê\"Ï=?…7ŠÐÑ!ˆÒÓ!?)ƒ?Ôc‚AÕc‚febˆÖ×!ˆØÑ!ˆÒÙ!…\\ØÑ!ˆ‚OˆÚÛ\"cˆÐÑ!*‡" [target last-input-char mh-to-field-choices case-fold-search t eol nil expand-abbrev assoc logior 96 mh-position-on-field skip-chars-backward "     " delete-region 115 backward-char 1 looking-at "[:,]" ", " " " re-search-forward "^To:" forward-line "^[     ]" format "%s 
  702. "] 16))
  703.  
  704. (defun mh-to-fcc nil "\
  705. Insert an Fcc: field in the current message.
  706. Prompt for the field name with a completion list of the current folders." (interactive) (byte-code "ÈÄÅÆÇÂ#È ˆŠÉ ˆ    ÊÃOc)*‡" [last-input-char folder t nil 6 mh-prompt-for-folder "Fcc" "" expand-abbrev mh-to-field 1] 6))
  707.  
  708. (defun mh-insert-signature nil "\
  709. Insert the file ~/.signature at the current point." (interactive) (byte-code "ÀˆÁÂ!ˆÃÄ !‡" [nil insert-file-contents "~/.signature" set-buffer-modified-p buffer-modified-p] 4))
  710.  
  711. (defun mh-check-whom nil "\
  712. Verify recipients of the current letter." (interactive) (byte-code "ˆàÄÁ!ˆÅ ˆÆÇ!ˆÈÉ!ˆÊp!ˆË ˆÌÍÁ#ˆÎÏ!ˆÆÐ!)‡" [file-name t nil buffer-file-name set-buffer-modified-p save-buffer message "Checking recipients..." switch-to-buffer-other-window "*Mail Recipients*" bury-buffer erase-buffer mh-exec-cmd-output "whom" other-window -1 "Checking recipients...done"] 11))
  713.  
  714. (defvar mh-searching-folder nil "\
  715. Folder this pick is searching.")
  716.  
  717. (defun mh-make-pick-template nil (byte-code "Á ˆÂ ˆÃÄ!ˆÅÆÇÈÉÊË&ˆÌ ˆÍ!ˆebˆÎ ‡" [mh-pick-mode-map erase-buffer kill-all-local-variables make-local-variable mh-searching-folder insert "From: 
  718. " "To: 
  719. " "Cc: 
  720. " "Date: 
  721. " "Subject: 
  722. " "---------
  723. " mh-letter-mode use-local-map end-of-line] 10))
  724.  
  725. (defun mh-do-pick-search nil "\
  726. Find messages that match the qualifications in the current pattern buffer.
  727. Messages are searched for in the folder named in mh-searching-folder.
  728. Put messages found in a sequence named `search'." (interactive) (byte-code "Ĉ̠
  729. ÄÄÄŠÍ    !ƒ$    qˆÎÏ#‰‚0Р   !ˆÑ‰ˆÉ‰)ˆÒÓ!ˆebˆÔ!‰…\\Õ    Ö×ØBÙ     ÚÛÜ%\"#‰
  730. ˆÛ‰ˆ‚9ˆÒÝ!ˆƒnÞ    
  731. \"‚qß    !ˆà ˆáÖâ T#-‡" [pattern-buffer searching-buffer mh-searching-folder range nil pattern new-buffer mh-first-msg-num mh-last-msg-num t msgs mh-cmd-note buffer-name get-buffer format "%d-%d" mh-make-folder "all" message "Searching..." mh-next-pick-field mh-seq-from-command search nconc "pick" list "-sequence" "search" "-list" "Searching...done" mh-scan-folder switch-to-buffer delete-other-windows mh-notate-seq 37] 18))
  732.  
  733. (defun mh-next-pick-field (buffer) (byte-code "qˆÂmƒÃ‚gÇÈÃÂ#ƒ7ÉÊËÌÍÎ!ÏÎ!\"!\"ÌÍÐ!ÏÐ!\"ÑÎ!ˆ D*‚gÇÒÃÂ#ƒfÓÎ!ˆÌ`d\"GÔV…WÕÖ\"?ƒa×D‚bÃ)‚gÃ)‡" [buffer case-fold-search t nil component pat body re-search-forward "^\\([a-z].*\\):[     ]*\\([a-z0-9].*\\)$" format "--%s" downcase buffer-substring match-beginning 1 match-end 2 forward-line "^-*$" forward-char 0 equal "
  734. " "-search"] 16))
  735.  
  736. (defun mh-compose-and-send-mail (draft send-args sent-from-folder sent-from-msg to subject cc annotate-char annotate-field config) (byte-code "Ó!ˆÔ ˆ
  737. ‰ˆ ‰ˆ‰ˆ‰ˆ
  738. ‰    ˆ ‰ ˆÕC‰ˆÖÒ!…4ÒJ…sÒJ<…G@×=?ƒh…eØ@$ˆA‰ˆ‚J‚rØ$)‡" [draft mh-sent-from-folder sent-from-folder mh-sent-from-msg sent-from-msg mh-send-args send-args mh-annotate-char annotate-char mh-annotate-field annotate-field mh-previous-window-config config mode-line-buffer-identification value to subject cc mh-compose-letter-function pop-to-buffer mh-letter-mode "{%b}" boundp lambda funcall] 9))
  739.  
  740. (defun mh-send-letter (&optional arg) "\
  741. Send the draft letter in the current buffer.
  742. If optional prefix argument is provided, monitor delivery.
  743. Run mh-before-send-letter-hook before doing anything." (interactive "P") (byte-code "ˈÌÍ!ˆÎÀ!ˆÏ ˆÐÑ!ˆpÒ  ƒLÓÔ!ˆÕ ˆƒ6Ö×ÀØÙÚ
  744. &‚?Ö×ÀØÙÚ
  745. &ˆdbˆÛÜ!ˆ    q‚bƒ\\Ý×ÚÞ
  746. %‚bÝ×ÚÞ
  747. $ˆ…~ß    à
  748. áâãäå!äæ!#&ˆ?†‡çè!…•é    !ˆ …•ê !ˆÐë!+‡" [t draft-buffer file-name config mh-previous-window-config arg mh-send-args mh-annotate-char mh-sent-from-msg mh-sent-from-folder mh-annotate-field nil run-hooks mh-before-send-letter-hook set-buffer-modified-p save-buffer message "Sending..." buffer-file-name pop-to-buffer "MH mail delivery" erase-buffer mh-exec-cmd-output "send" "-watch" "-nopush" "-nodraftfolder" recenter -1 mh-exec-cmd-daemon "-noverbose" mh-annotate-msg "-component" "-text" format "\"%s %s\"" mh-get-field "To:" "Cc:" y-or-n-p "Kill draft buffer? " kill-buffer set-window-configuration "Sending...done"] 25))
  749.  
  750. (defun mh-insert-letter (prefix-provided folder msg) "\
  751. Insert a message from any folder into the current letter.
  752. Removes the message's headers using mh-invisible-headers.
  753. Prefixes each non-blank line with mh-ins-buf-prefix (default \">> \").
  754. If optional prefix argument provided, do not indent and do not delete
  755. headers.  Leaves the mark before the letter and point after it." (interactive (byte-code "ÄÅ    Â#ÆÇÈ ƒÇÉ \"‚Ê\"!E‡" [current-prefix-arg mh-sent-from-folder nil mh-sent-from-msg mh-prompt-for-folder "Message from" read-input format "Message number%s: " " [%d]" ""] 9)) (byte-code "ˆŒË``\"ˆeÌÍ\"…Î !‰ˆÏÐÑÒÓÔ!\"$ˆ?…:Õ     #ˆÖ !ˆ×
  756. !))‡" [current-prefix-arg mh-sent-from-folder nil mh-sent-from-msg start msg folder prefix-provided mh-invisible-headers mh-visible-headers mh-ins-buf-prefix narrow-to-region equal "" int-to-string mh-exec-lib-cmd-output "mhl" "-nobell" "-noclear" expand-file-name mh-expand-file-name mh-clean-msg-header set-mark mh-insert-prefix-string] 11))
  757.  
  758. (defun mh-yank-cur-msg nil "\
  759. Insert the current message into the draft buffer.
  760. Prefix each non-blank line in the message with the string in
  761. `mh-ins-buf-prefix'.  If a region is set in the message's buffer, then
  762. only the region will be inserted.  Otherwise, the entire message will
  763. be inserted if `mh-yank-from-start-of-msg' is non-nil.  If this variable
  764. is nil, the portion of the message following the point will be yanked.
  765. If `mh-delete-yanked-msg-window' is non-nil, any window displaying the
  766. yanked message will be deleted." (interactive) (byte-code "ʈ…    ƒq`pqˆ …Ë!ˆqˆÌ ƒ*ÍΠϠ\"‚QÐ=ƒA͊ebˆÑÒ!ˆ`)d\"‚QƒMÍed\"‚QÍ`d\" qˆÓ
  767.  
  768. \"ˆÔ ˆcˆÕ    !ˆÖcˆ× )*‚tØÙ!‡" [mh-sent-from-folder mh-sent-from-msg to-point to-buffer mh-delete-yanked-msg-window mh-show-buffer mh-ins-str mh-yank-from-start-of-msg t mh-ins-buf-prefix nil delete-windows-on mark buffer-substring region-beginning region-end body mh-goto-header-end 1 narrow-to-region push-mark mh-insert-prefix-string "
  769. " widen error "There is no current message"] 15))
  770.  
  771. (defun mh-insert-prefix-string (mh-ins-string) (byte-code "ŠÀd!ˆebˆÁÂ!)‡" [set-mark run-hooks mh-yank-hooks] 3))
  772.  
  773. (defun mh-fully-kill-draft nil "\
  774. Kill the draft message file and the draft message buffer.
  775. Use \\[kill-buffer] if you don't want to delete the draft message file." (interactive) (byte-code "ˆÃÄ!ƒ.    ÅÆ !…ÇÆ !ˆÈÂ!ˆÉÊ !ˆËÌ!ˆ…*Í!)‚1ÎÏ!‡" [config mh-previous-window-config nil y-or-n-p "Kill draft message? " file-exists-p buffer-file-name delete-file set-buffer-modified-p kill-buffer buffer-name message "" set-window-configuration error "Message not killed"] 12))
  776.  
  777. (defun mh-recenter (arg) (byte-code "Áp! =…ÂÄ!‡" [arg get-buffer-window selected-window recenter (t)] 4))
  778.  
  779. (defun mh-make-seq (name msgs) (byte-code "    B‡" [name msgs] 2))
  780.  
  781. (defmacro mh-seq-name (pair) (byte-code "ÁD‡" [pair car] 2))
  782.  
  783. (defmacro mh-seq-msgs (pair) (byte-code "ÁD‡" [pair cdr] 2))
  784.  
  785. (defun mh-find-seq (name) (byte-code "    \"‡" [name mh-seq-list assoc] 3))
  786.  
  787. (defun mh-seq-to-msgs (seq) "\
  788. Return a list of the messages in SEQUENCE." (byte-code "Á!A‡" [seq mh-find-seq] 2))
  789.  
  790. (defun mh-seq-containing-msg (msg) (byte-code "    Ã…  @A>…@@
  791. B‰ˆA‰ˆ‚ˆ
  792. *‡" [l mh-seq-list seqs nil msg] 3))
  793.  
  794. (defun mh-msg-to-seq (msg) (byte-code "Á!@‡" [msg mh-seq-containing-msg] 2))
  795.  
  796. (defun mh-read-seq-default (prompt not-empty) (byte-code "Ä    
  797. † #‡" [prompt not-empty mh-narrowed-to-seq mh-previous-seq mh-read-seq] 4))
  798.  
  799. (defun mh-read-seq (prompt not-empty &optional default) (byte-code "ÈÉÊ    Ë
  800. ƒÉÌ
  801. \"‚Í$Î !\"ÏÐ\"ƒ&ÑÒÅ!!‚4ÏÍ\"ƒ1
  802. ‚4Ó!Ô !?…B…KÕÉÖ \"!ˆ +‡" [input prompt default mh-seq-list seq t msgs not-empty completing-read format "%s %s %s" "sequence:" "[%s] " "" mh-seq-names equal "%" mh-msg-to-seq mh-get-msg-num intern mh-seq-to-msgs error "No messages in sequence `%s'"] 14))
  803.  
  804. (defun mh-read-folder-sequences (folder define-sequences) (byte-code "Á
  805. …Æ !ˆÇÈ \"ˆŠÉÊË Ì$ˆebˆÍÎÁÅ#…8ÏÐÑÒÓ!ÔÓ!\"!Õ \"B‰ˆ‚ˆÖe`\")ˆ)‡" [seqs nil define-sequences mh-seq-list folder t mh-define-sequences mh-mapc (lambda (seq) (byte-code "Â@!…     B‰‡" [seq seqs mh-folder-name-p] 3)) mh-exec-cmd-quiet " *mh-temp*" "mark" "-list" re-search-forward "^[^: ]+" mh-make-seq intern buffer-substring match-beginning 0 match-end mh-read-msg-list delete-region] 13))
  806.  
  807. (defun mh-seq-names (seq-list) (byte-code "ÁÂ\"‡" [seq-list mapcar (lambda (entry) (byte-code "Á@!C‡" [entry symbol-name] 2))] 3))
  808.  
  809. (defun mh-seq-from-command (folder seq seq-command) (byte-code "ÁÁÄŠÉ‹ˆqˆÊ
  810. !‰ˆË
  811. \"B‰ˆ
  812. )+‡" [msg nil msgs case-fold-search t seq-command folder mh-seq-list seq ((byte-code "ÃÄÅ#ˆebˆÆ @‰…    
  813. B‰ˆÇÈ!ˆ‚    ‡" [seq-command msg msgs apply mh-exec-cmd-quiet " *mh-temp*" mh-read-msg-list forward-line 1] 5)) nreverse mh-make-seq] 4))
  814.  
  815. (defun mh-read-msg-list nil (byte-code "ÁŠÂ ˆ`)ÁÆÇ
  816. Ä#…oÈÉÊË!ÌË!\"!‰ˆÍÎ!ƒ_ÏÐ!ˆÆÇ
  817. Ä#ˆÈÉÊË!ÌË!\"! W…FÑÒ #ˆ X…[ B‰ˆ T‰ˆ‚G)‚kÓ !?…k B‰ˆ‚ ˆ+‡" [msgs nil end-of-line num t num2 re-search-forward "[0-9]+" string-to-int buffer-substring match-beginning 0 match-end looking-at "-" forward-char 1 error "Bad message range: %d-%d" zerop] 18))
  818.  
  819. (defun mh-remove-seq (seq) (byte-code "ÂÃÄ    T%ˆÅÆC\"ˆÇ!‡" [seq mh-cmd-note mh-map-to-seq-msgs mh-notate-if-in-one-seq 32 mh-undefine-sequence "all" mh-delete-seq-locally] 6))
  820.  
  821. (defun mh-delete-seq-locally (seq) (byte-code "à   !Ä
  822. \"‰)‡" [entry seq mh-seq-list mh-find-seq delq] 4))
  823.  
  824. (defun mh-remove-msg-from-seq (msg seq &optional internal-flag) (byte-code "Å    !…$Æ
  825. Ç T@$ˆ ?…È    
  826. C\"ˆÉÊ
  827. A\"\")‡" [entry seq msg mh-cmd-note internal-flag mh-find-seq mh-notate-if-in-one-seq 32 mh-undefine-sequence setcdr delq] 8))
  828.  
  829. (defun mh-add-msgs-to-seq (msgs seq &optional internal-flag) (byte-code "Æ    !
  830. … Ç
  831. !…
  832. C‰ˆ?ƒ#È    
  833. \" B‰‚/
  834. …/ÉÊ
  835. A\"\"ˆ ?…@Ë    
  836. \"ˆÌ    ÍT#)‡" [entry seq msgs mh-seq-list internal-flag mh-cmd-note mh-find-seq atom mh-make-seq setcdr append mh-add-to-sequence mh-notate-seq 37] 10))
  837.  
  838. (defun mh-rename-seq (seq new-name) "\
  839. Rename a SEQUENCE to have a new NAME." (interactive "SOld sequence name: 
  840. SNew name: ") (byte-code "ÈĠ   !ƒÅ
  841. \"‚ÆÇ    \"ˆÈ    A\"ˆÉ
  842. A\")‡" [old-seq seq new-name nil mh-find-seq rplaca error "Sequence %s does not exists" mh-undefine-sequence mh-define-sequence] 7))
  843.  
  844. (defun mh-notate-user-sequences nil (byte-code "    Ä…$@@‰ˆÅ
  845. !?…Æ
  846. Ç T#ˆA‰ˆ‚*‡" [seqs mh-seq-list name mh-cmd-note nil mh-internal-seq mh-notate-seq 37] 6))
  847.  
  848. (defun mh-internal-seq (name) (byte-code "Â>†    =†Ã!‡" [name mh-unseen-seq (answered cur deleted forwarded printed) mh-folder-name-p] 2))
  849.  
  850. (defun mh-folder-name-p (name) (byte-code "9ƒÁ!ÂHÃ=‚ÂHÃ=‡" [name symbol-name 0 43] 3))
  851.  
  852. (defun mh-notate-seq (seq notation offset) (byte-code "ÃÄ    
  853. $‡" [seq notation offset mh-map-to-seq-msgs mh-notate] 5))
  854.  
  855. (defun mh-notate-if-in-one-seq (msg notation offset seq) (byte-code "Å    !
  856. @=…A?…Æ     #)‡" [in-seqs msg seq notation offset mh-seq-containing-msg mh-notate] 5))
  857.  
  858. (defun mh-map-to-seq-msgs (func seq &rest args) (byte-code "ŠÅ    !…!Æ@ÂÂ#…Ç @ #ˆA‰ˆ‚))‡" [msgs seq t func args mh-seq-to-msgs mh-goto-msg apply] 7))
  859.  
  860. (defun mh-map-over-seqs (func seq-list) (byte-code "…    @@@A#ˆA‰ˆ‚‡" [seq-list func funcall] 5))
  861.  
  862. (defun mh-define-sequences (seq-list) (byte-code "ÁÂ\"‡" [seq-list mh-map-over-seqs mh-define-sequence] 3))
  863.  
  864. (defun mh-add-to-sequence (seq msgs) (byte-code "Ã!?…    …ÄÅÆ
  865. ÇÈ!É    &‡" [seq msgs mh-current-folder mh-folder-name-p apply mh-exec-cmd "mark" "-sequence" symbol-name "-add"] 10))
  866.  
  867. (defun mh-define-sequence (seq msgs) (byte-code "…à   !?…ŠÄÅÆ
  868. ÇÈ    !ÉÊË!&)‡" [msgs seq mh-current-folder mh-folder-name-p apply mh-exec-cmd "mark" "-sequence" symbol-name "-add" "-zero" mh-list-to-string] 12))
  869.  
  870. (defun mh-undefine-sequence (seq msgs) (byte-code "ÃÄÅÆÇ    !È
  871. &‡" [mh-current-folder seq msgs apply mh-exec-cmd "mark" "-sequence" symbol-name "-delete"] 9))
  872.  
  873. (defun mh-copy-seq-to-point (seq location) (byte-code "Âà   #‡" [seq location mh-map-to-seq-msgs mh-copy-line-to-point] 4))
  874.  
  875. (defun mh-copy-line-to-point (msg location) (byte-code "À ˆ`ÂÃ!ˆÄ`\"ˆ    bˆÅ ˆb)‡" [beginning-of-line location forward-line 1 copy-region-as-kill yank] 5))
  876.  
  877. (defun mh-exec-cmd (command &rest args) (byte-code "ŠÅqˆÆ ˆÇÈÉ    \"ÂÃÂÊ !&ˆË ÌV…͋)‡" [command mh-progs nil t args " *mh-temp*" erase-buffer apply call-process expand-file-name mh-list-to-string buffer-size 0 ((byte-code "ÀÁ!ˆÂÃ!‡" [switch-to-buffer-other-window " *mh-temp*" sit-for 5] 3))] 10))
  878.  
  879. (defun mh-exec-cmd-quiet (buffer command &rest args) (byte-code ";…
  880. qˆÅ ˆÆÇÈ    
  881. \"Ãà &‡" [buffer command mh-progs nil args erase-buffer apply call-process expand-file-name] 9))
  882.  
  883. (defun mh-exec-cmd-output (command display &rest args) (byte-code "Æ`À\"ˆÇÈÉ    
  884. \"ÃÀ Ê!&ˆË ‡" [t command mh-progs nil display args push-mark apply call-process expand-file-name mh-list-to-string exchange-point-and-mark] 10))
  885.  
  886. (defun mh-exec-cmd-daemon (command &rest args) (byte-code "ŠÆÇ!qˆÈ )ˆÁÉÊ ÁË \"Ì!%Í
  887. Î\"*‡" [process-connection-type nil process command mh-progs args get-buffer-create " *mh-temp*" erase-buffer apply start-process expand-file-name mh-list-to-string set-process-filter mh-process-daemon] 10))
  888.  
  889. (defun mh-process-daemon (process output) (byte-code "ÁÂ!qˆÃ!ˆÄÂ!‡" [output get-buffer-create " *mh-temp*" insert-before-markers display-buffer] 4))
  890.  
  891. (defun mh-exec-lib-cmd-output (command &rest args) (byte-code "Å`À\"ˆÆÇÈ    
  892. \"ÃÀÃÉ !&ˆÊ ‡" [t command mh-lib nil args push-mark apply call-process expand-file-name mh-list-to-string exchange-point-and-mark] 10))
  893.  
  894. (defun mh-list-to-string (l) (byte-code "Á
  895. …h
  896. @?†_
  897. @9Ā
  898. @!B‰‚_Å
  899. @!ƒ/Æ
  900. @!B‰‚_Ç
  901. @È\"†_
  902. @;ƒF
  903. @B‰‚_
  904. @<ƒZÉÊË
  905. @!!\"‰‚_ÌÍ
  906. @\"ˆ
  907. A‰ˆ‚ˆÊ!)‡" [new-list nil l t symbol-name numberp int-to-string equal "" nconc nreverse mh-list-to-string error "Bad element in mh-list-to-string: %s"] 11))
  908.  
  909. (defun mh-annotate-msg (msg buffer note &rest args) (byte-code "ÅÆÇ    
  910. %ˆŠÈ!…&qˆ    9ƒ É     T#‚&Ê     T#)‡" [buffer msg args note mh-cmd-note apply mh-exec-cmd "anno" get-buffer mh-notate-seq mh-notate] 7))
  911.  
  912. (defun mh-notate (msg notation offset) (byte-code "Š?† ÈÁÁ#…*É ÄÄÊ ˆË!ˆÌÍ!ˆc*Î
  913. !ˆ))‡" [msg t folder-updating-mod-flag buffer-read-only nil buffer-file-name offset notation mh-goto-msg buffer-modified-p beginning-of-line forward-char delete-char 1 mh-set-folder-modified-p] 8))
  914.  
  915. (defun mh-prompt-for-folder (prompt default can-create) (byte-code "ÇÈÉÊ    \"ƒ˂ÇÌ    \"#Ä ?…Í ˆÎ ÄÄÏ%‰…5É
  916. Ê\"…5É    Ê\"…=Ĉ‚ˆÉ
  917. Ê\"†IÉ
  918. Ï\"ƒR    ‰‚_Ð
  919. !?…_ÇÑ
  920. \"‰ˆÒÓ
  921. !!?…qÔÇÕ
  922. \"!ƒ‘Ö×
  923. \"ˆØÙÄÄÄÓ
  924. !%ˆÖÚ
  925. \"ˆ
  926. C B‰‚ªƒœÛÜ
  927. \"‚ªÝ
  928. \"?…ª
  929. C B‰)ˆ
  930. *‡" [prompt default name mh-folder-list nil new-file-p t format "%s folder%s" equal "" "? " " [%s]? " mh-set-folder-list completing-read "+" mh-folder-name-p "+%s" file-exists-p mh-expand-file-name y-or-n-p "Folder %s does not exist. Create it? " message "Creating %s" call-process "mkdir" "Creating %s...done" error "Folder %s is not created" assoc] 23))
  931.  
  932. (defun mh-set-folder-list nil "\
  933. Sets mh-folder-list correctly.
  934. A useful function for the command line or for when you need to sync by hand." (byte-code "Á ‰‡" [mh-folder-list mh-make-folder-list] 3))
  935.  
  936. (defun mh-make-folder-list nil "\
  937. Return a list of the user's folders.
  938. Result is in a form suitable for completing read." (interactive) (byte-code "ˆÄÅ!ˆÆ‹‡" [mh-recursive-folders list nil start message "Collecting folder names..." ((byte-code "ÄÅÆǃ ȂÉ$ˆebˆÂÂm?…4`‰ˆÊË!ˆÌÍÎ `S\"\"C    B‰ˆ‚ˆÏÐ!ˆ    *‡" [mh-recursive-folders list nil start mh-exec-cmd-quiet " *mh-temp*" "folders" "-fast" "-recurse" "-norecurse" forward-line 1 format "+%s" buffer-substring message "Collecting folder names...done"] 8))] 2))
  939.  
  940. (defun mh-remove-folder-from-folder-list (folder) (byte-code "Âà   \"\"‰‡" [mh-folder-list folder delq assoc] 4))
  941.  
  942. (defun mh-read-msg-range (prompt) (byte-code "Ç    !GÈÅ
  943. W…*É
  944. #@ B‰ˆA‰)ˆ‚ ˆÊ !,‡" [buf prompt buf-size start input nil next read-string 0 read-from-string nreverse] 6))
  945.  
  946. (defun mh-get-msg-num (error-if-no-message) (byte-code "ŠÄ ˆÅ!ƒÆÇÈÉ!ÊÉ!\"!‚\"    ƒ!ËÌ!‚\"Ã)‡" [mh-msg-number-regexp error-if-no-message t nil beginning-of-line looking-at string-to-int buffer-substring match-beginning 1 match-end error "Cursor not pointing to message"] 8))
  947.  
  948. (defun mh-msg-search-pat (n) (byte-code "    \"‡" [mh-msg-search-regexp n format] 3))
  949.  
  950. (defun mh-msg-filename (msg &optional folder) (byte-code "ÃÄ!    ƒÅ    !‚
  951. \"‡" [msg folder mh-folder-filename expand-file-name int-to-string mh-expand-file-name] 5))
  952.  
  953. (defun mh-msg-filenames (msgs &optional folder) (byte-code "ÁÂÃ#‡" [msgs mapconcat (lambda (msg) (byte-code "    \"‡" [msg folder mh-msg-filename] 3)) " "] 4))
  954.  
  955. (defun mh-expand-file-name (filename &optional default) "\
  956. Just like `expand-file-name', but also handles MH folder names.
  957. Assumes that any filename that starts with '+' is a folder name." (byte-code "Ã!ƒÄÅÆO    \"‚Ä
  958. \"‡" [filename mh-user-path default mh-folder-name-p expand-file-name 1 nil] 5))
  959.  
  960. (defun mh-find-path nil (byte-code "ŠÅÆÇ!†    È!É!?…ÊË\"ˆÌÍ!qˆÎ ˆÏ!ˆÐÑ!‰ˆÒ    Ó\"ƒ6‰‚CÔ    !?…CÕÖ    \"‰ˆÐ×!‰ˆÒ Ó\"…T؉ˆÙÅ ÅÚ!\"!‰ˆ    …jÉÛ    !!?…qÊÜ    \"ˆÐÝ!‰ˆÒ Ó\"ƒ…Þ‰‚Šß !‰))‡" [profile mh-draft-folder nil mh-user-path mh-unseen-seq expand-file-name getenv "MH" "~/.mh_profile" file-exists-p error "Cannot find MH profile %s" get-buffer-create " *mh-temp*" erase-buffer insert-file-contents mh-get-field "Draft-Folder:" equal "" mh-folder-name-p format "+%s" "Path:" "Mail" file-name-as-directory "~" mh-expand-file-name "Draft folder %s does not exist.  Create it and try again." "Unseen-Sequence:" unseen intern] 24))
  961.  
  962. (defun mh-get-field (field) (byte-code "ÁebˆÅÆÇ
  963. \"ÃÁ#?ƒȂAÉÊ!ƒȂAÅËÃÁ#ˆÌÍ!ÎÍ!ˆÉÏ!…:ÎÍ!ˆ‚-ˆÐ `S\"))‡" [case-fold-search t field nil start re-search-forward format "^%s" "" looking-at "[     ]*$" "[     ]*\\([^     
  964. ].*\\)$" match-beginning 1 forward-line "[     ]" buffer-substring] 11))
  965.  
  966. (defun mh-insert-fields (&rest name-values) (byte-code "Á
  967. …C
  968. @
  969. A@Æ Ç\"?…8ebˆÈÉÊ \"ÅÁ#?ƒ1ËÌ!ˆÍ Î Ï$‚8РˆÍÎ \"ˆ
  970. AA‰*ˆ‚)‡" [case-fold-search t name-values field-name value nil equal "" re-search-forward format "^%s" mh-goto-header-end 0 insert " " "
  971. " end-of-line] 10))
  972.  
  973. (defun mh-position-on-field (field set-mark) (byte-code "Á
  974. …Å ˆebˆÆÇ!ˆÈÉÊ \"ÄÁ#ƒ\"Ë ˆÁ‚#Ä)‡" [case-fold-search t set-mark field nil push-mark mh-goto-header-end 0 re-search-backward format "^%s" end-of-line] 7))
  975.  
  976. (defun mh-goto-header-end (arg) (byte-code "ÂÃÀÀ#… Ä    !‡" [nil arg re-search-forward "^$\\|^-+$" forward-line] 4))
  977.  
  978. (suppress-keymap mh-folder-mode-map)
  979.  
  980. (define-key mh-folder-mode-map "q" (quote mh-quit))
  981.  
  982. (define-key mh-folder-mode-map "b" (quote mh-quit))
  983.  
  984. (define-key mh-folder-mode-map "?" (quote mh-msg-is-in-seq))
  985.  
  986. (define-key mh-folder-mode-map "%" (quote mh-put-msg-in-seq))
  987.  
  988. (define-key mh-folder-mode-map "|" (quote mh-pipe-msg))
  989.  
  990. (define-key mh-folder-mode-map "a" (quote mh-edit-again))
  991.  
  992. (define-key mh-folder-mode-map "%" (quote mh-delete-msg-from-seq))
  993.  
  994. (define-key mh-folder-mode-map "n" (quote mh-narrow-to-seq))
  995.  
  996. (define-key mh-folder-mode-map "w" (quote mh-widen))
  997.  
  998. (define-key mh-folder-mode-map "b" (quote mh-burst-digest))
  999.  
  1000. (define-key mh-folder-mode-map "u" (quote mh-undo-folder))
  1001.  
  1002. (define-key mh-folder-mode-map " " (quote mh-page-digest))
  1003.  
  1004. (define-key mh-folder-mode-map "" (quote mh-page-digest-backwards))
  1005.  
  1006. (define-key mh-folder-mode-map "e" (quote mh-extract-rejected-mail))
  1007.  
  1008. (define-key mh-folder-mode-map "f" (quote mh-visit-folder))
  1009.  
  1010. (define-key mh-folder-mode-map "k" (quote mh-kill-folder))
  1011.  
  1012. (define-key mh-folder-mode-map "l" (quote mh-list-folders))
  1013.  
  1014. (define-key mh-folder-mode-map "o" (quote mh-write-msg-to-file))
  1015.  
  1016. (define-key mh-folder-mode-map "p" (quote mh-pack-folder))
  1017.  
  1018. (define-key mh-folder-mode-map "s" (quote mh-search-folder))
  1019.  
  1020. (define-key mh-folder-mode-map "r" (quote mh-rescan-folder))
  1021.  
  1022. (define-key mh-folder-mode-map "l" (quote mh-print-msg))
  1023.  
  1024. (define-key mh-folder-mode-map "t" (quote mh-toggle-showing))
  1025.  
  1026. (define-key mh-folder-mode-map "c" (quote mh-copy-msg))
  1027.  
  1028. (define-key mh-folder-mode-map ">" (quote mh-write-msg-to-file))
  1029.  
  1030. (define-key mh-folder-mode-map "i" (quote mh-inc-folder))
  1031.  
  1032. (define-key mh-folder-mode-map "x" (quote mh-execute-commands))
  1033.  
  1034. (define-key mh-folder-mode-map "e" (quote mh-execute-commands))
  1035.  
  1036. (define-key mh-folder-mode-map "r" (quote mh-redistribute))
  1037.  
  1038. (define-key mh-folder-mode-map "f" (quote mh-forward))
  1039.  
  1040. (define-key mh-folder-mode-map "s" (quote mh-send))
  1041.  
  1042. (define-key mh-folder-mode-map "m" (quote mh-send))
  1043.  
  1044. (define-key mh-folder-mode-map "a" (quote mh-reply))
  1045.  
  1046. (define-key mh-folder-mode-map "j" (quote mh-goto-msg))
  1047.  
  1048. (define-key mh-folder-mode-map "<" (quote mh-first-msg))
  1049.  
  1050. (define-key mh-folder-mode-map "g" (quote mh-goto-msg))
  1051.  
  1052. (define-key mh-folder-mode-map "" (quote mh-previous-page))
  1053.  
  1054. (define-key mh-folder-mode-map " " (quote mh-page-msg))
  1055.  
  1056. (define-key mh-folder-mode-map "." (quote mh-show))
  1057.  
  1058. (define-key mh-folder-mode-map "u" (quote mh-undo))
  1059.  
  1060. (define-key mh-folder-mode-map "!" (quote mh-refile-or-write-again))
  1061.  
  1062. (define-key mh-folder-mode-map "^" (quote mh-refile-msg))
  1063.  
  1064. (define-key mh-folder-mode-map "d" (quote mh-delete-msg))
  1065.  
  1066. (define-key mh-folder-mode-map "" (quote mh-delete-msg-no-motion))
  1067.  
  1068. (define-key mh-folder-mode-map "p" (quote mh-previous-undeleted-msg))
  1069.  
  1070. (define-key mh-folder-mode-map "n" (quote mh-next-undeleted-msg))
  1071.  
  1072. (define-key mh-folder-mode-map "o" (quote mh-refile-msg))
  1073.  
  1074. (define-key mh-letter-mode-map "" (quote mh-to-field))
  1075.  
  1076. (define-key mh-letter-mode-map "" (quote mh-to-field))
  1077.  
  1078. (define-key mh-letter-mode-map "" (quote mh-to-fcc))
  1079.  
  1080. (define-key mh-letter-mode-map "" (quote mh-to-field))
  1081.  
  1082. (define-key mh-letter-mode-map "" (quote mh-to-field))
  1083.  
  1084. (define-key mh-letter-mode-map "b" (quote mh-to-field))
  1085.  
  1086. (define-key mh-letter-mode-map "c" (quote mh-to-field))
  1087.  
  1088. (define-key mh-letter-mode-map "f" (quote mh-to-fcc))
  1089.  
  1090. (define-key mh-letter-mode-map "s" (quote mh-to-field))
  1091.  
  1092. (define-key mh-letter-mode-map "t" (quote mh-to-field))
  1093.  
  1094. (define-key mh-letter-mode-map "" (quote mh-fully-kill-draft))
  1095.  
  1096. (define-key mh-letter-mode-map "" (quote mh-check-whom))
  1097.  
  1098. (define-key mh-letter-mode-map "    " (quote mh-insert-letter))
  1099.  
  1100. (define-key mh-letter-mode-map "" (quote mh-yank-cur-msg))
  1101.  
  1102. (define-key mh-letter-mode-map "" (quote mh-insert-signature))
  1103.  
  1104. (define-key mh-letter-mode-map "" (quote mh-send-letter))
  1105.  
  1106. (define-key mh-pick-mode-map "" (quote mh-do-pick-search))
  1107.  
  1108. (define-key mh-pick-mode-map "" (quote mh-to-field))
  1109.  
  1110. (define-key mh-pick-mode-map "" (quote mh-to-field))
  1111.  
  1112. (define-key mh-pick-mode-map "" (quote mh-to-field))
  1113.  
  1114. (define-key mh-pick-mode-map "" (quote mh-to-field))
  1115.  
  1116. (define-key mh-pick-mode-map "" (quote mh-to-field))
  1117.  
  1118. (define-key mh-pick-mode-map "b" (quote mh-to-field))
  1119.  
  1120. (define-key mh-pick-mode-map "c" (quote mh-to-field))
  1121.  
  1122. (define-key mh-pick-mode-map "f" (quote mh-to-field))
  1123.  
  1124. (define-key mh-pick-mode-map "s" (quote mh-to-field))
  1125.  
  1126. (define-key mh-pick-mode-map "t" (quote mh-to-field))
  1127.  
  1128. (define-key mh-pick-mode-map "" (quote mh-check-whom))
  1129.